Array類
Arrays 類包含用於操作數組的各種方法(例如排序和搜索)。還包含一個靜態工廠,允許將數組轉爲 List。
Array類常用方法
import java.util.Arrays
例如:
import java.util.Arrays;
import java.util.Random;
public class ArraysDemo {
public static void main(String[] args) {
int[] arr = new int[10];
//將數組元素都設爲9
Arrays.fill(arr, 9);
System.out.println("fill:" + Arrays.toString(arr));
Random random = new Random();
for (int i = 0; i < arr.length; i++) {
//使用100以內的隨機數賦值數組
arr[i] = random.nextInt(101);
}
//重新賦值後的數組
System.out.println("重新賦值:" + Arrays.toString(arr));
//將索引爲5的元素設爲50
arr[5] = 50;
//排序
Arrays.sort(arr);
//排序後的數組
System.out.println("sort排序後:" + Arrays.toString(arr));
//查找50的位置
int i = Arrays.binarySearch(arr, 50);
System.out.println("值爲50的元素索引:"+i);
//複製一份新數組
int[] newArr = Arrays.copyOf(arr, arr.length);
//比較
System.out.println("equals:"+Arrays.equals(arr, newArr));
}
}
ArrayList
ArrayList 類實現一個可增長的動態數組,位於 java.util.ArrayList。實現了 List 接口,它可以存儲不同類型的對象(包括 null 在內),而數組則只能存放特定數據類型的值。
例如:
/**
* 學生類
*/
public class Student {
public String id;
public String name;
public Student(String id, String name){
this.id = id;
this.name = name;
}
@Override
public String toString() {
return “Student{“ +
“id=‘” + id + ‘\’’ +
“, name=‘” + name + ‘\’’ +
‘}’;
}
}
import java.util.*;
public class ListTest {
//集合後面的<>代表泛型的意思
//泛型是規定了集合元素的類型
/**
* 用於存放學生的List
*/
public List<Student> students;
public ListTest() {
this.students = new ArrayList<Student>();
}
/**
* 用於往students中添加學生
*/
public void testAdd() {
// 創建一個學生對象,並通過調用add方法,添加到學生管理List中
Student st1 = new Student("1", "張三");
students.add(st1);
// 取出 List中的Student對象 索引爲0 也就是第一個
Student temp = students.get(0);
System.out.println("添加了學生:" + temp.id + ":" + temp.name);
Student st2 = new Student("2", "李四");
//添加到list中,插入到索引爲0的位置,也就是第一個
students.add(0, st2);
Student temp2 = students.get(0);
System.out.println("添加了學生:" + temp2.id + ":" + temp2.name);
// 對象數組的形式添加
Student[] student = {new Student("3", "王五"), new Student("4", "馬六")};
// Arrays類包含用來操作數組(比如排序和搜索)的各種方法,asList() 方法用來返回一個受指定數組支持的固定大小的列表
students.addAll(Arrays.asList(student));
Student temp3 = students.get(2);
Student temp4 = students.get(3);
System.out.println("添加了學生:" + temp3.id + ":" + temp3.name);
System.out.println("添加了學生:" + temp4.id + ":" + temp4.name);
Student[] student2 = {new Student("5", "周七"), new Student("6", "趙八")};
students.addAll(2, Arrays.asList(student2));
Student temp5 = students.get(2);
Student temp6 = students.get(3);
System.out.println("添加了學生:" + temp5.id + ":" + temp5.name);
System.out.println("添加了學生:" + temp6.id + ":" + temp6.name);
}
/**
* 取得List中的元素的方法
*/
public void testGet() {
int size = students.size();
for (int i = 0; i < size; i++) {
Student st = students.get(i);
System.out.println("學生:" + st.id + ":" + st.name);
}
}
/**
* 通過迭代器來遍歷
* 迭代器的工作是遍歷並選擇序列中的對象,Java 中 Iterator 只能單向移動
*/
public void testIterator() {
// 通過集合的iterator方法,取得迭代器實例
Iterator<Student> it = students.iterator();
System.out.println(“有如下學生(通過迭代器訪問):”);
while (it.hasNext()) {
Student st = it.next();
System.out.println(“學生” + st.id + “:” + st.name);
}
}
/**
* 通過for each 方法訪問集合元素
*
*/
public void testForEach() {
System.out.println(“有如下學生(通過for each):");
for (Student obj : students) {
Student st = obj;
System.out.println("學生:" + st.id + ":" + st.name);
}
//使用java8 Steam將學生排序後輸出
students.stream()//創建Stream
//通過學生id排序
.sorted(Comparator.comparing(x -> x.id))
//輸出
.forEach(System.out::println);
}
/**
* 修改List中的元素
*
*/
public void testModify() {
students.set(4, new Student("3", "吳酒"));
}
/**
* 刪除List中的元素
*
*/
public void testRemove() {
Student st = students.get(4);
System.out.println("我是學生:" + st.id + ":" + st.name + ",我即將被刪除");
students.remove(st);
System.out.println("成功刪除學生!");
testForEach();
}
public static void main(String[] args) {
ListTest lt = new ListTest();
lt.testAdd();
lt.testGet();
lt.testIterator();
lt.testModify();
lt.testForEach();
lt.testRemove();
}
}
$ javac Student.java ListTest.java
$ java ListTest
添加了學生:1:張三
添加了學生:2:李四
添加了學生:3:王五
添加了學生:4:馬六
添加了學生:5:周七
添加了學生:6:趙八
學生:2:李四
學生:1:張三
學生:5:周七
學生:6:趙八
學生:3:王五
學生:4:馬六
有如下學生(通過迭代器訪問):
學生2:李四
學生1:張三
學生5:周七
學生6:趙八
學生3:王五
學生4:馬六
有如下學生(通過for each):
學生:2:李四
學生:1:張三
學生:5:周七
學生:6:趙八
學生:3:吳酒
學生:4:馬六
Student{id=‘1’, name=‘張三’}
Student{id=‘2’, name=‘李四’}
Student{id=‘3’, name=‘吳酒’}
Student{id=‘4’, name=‘馬六’}
Student{id='5', name='周七'}
Student{id='6', name='趙八'}
我是學生:3:吳酒,我即將被刪除
成功刪除學生!
有如下學生(通過for each):
學生:2:李四
學生:1:張三
學生:5:周七
學生:6:趙八
學生:4:馬六
Student{id='1', name='張三'}
Student{id='2', name='李四'}
Student{id='4', name='馬六'}
Student{id='5', name='周七'}
Student{id='6', name='趙八'}
在上面的代碼中,用到了 Arrays 類, Arrays 包含用來操作數組(比如排序和搜索)的各種方法,asList() 方法用來返回一個受指定數組支持的固定大小的列表。