java.util.ArrayList類 是 java.util.List 的一個實現類,是一個基於數組實現的有序容器類(容許存儲 null)。java
public class ArrayListDemo { public static void main(String [] args) { List<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); System.out.println(arrayList); } } /~~out:[tom, jack, mary]
public class ArrayListDemo { public static void main(String [] args) { List<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); // 在索引爲 0 的位置插入 mike arrayList.add(0, "mike"); System.out.println(arrayList); } } ~~out:[mike, tom, jack, mary]
public class ArrayListDemo { public static void main(String [] args) { List<String> arrayList = new ArrayList<>(); List<String> arrayList2 = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); arrayList2.add("mike"); arrayList2.add("jeery"); // 將arrayList2 的元素所有添加到 arrayList中 並從 arrayList 的末尾開始添加 arrayList.addAll(arrayList2); System.out.println(arrayList); } } ~~out:[tom, jack, mary, mike, jeery]
public class ArrayListDemo { public static void main(String [] args) { List<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); // 清除 arrayList 中的全部元素 arrayList.clear(); System.out.println(arrayList); } } ~~out:[]
public class ArrayListDemo { public static void main(String [] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); // listCopy 是 arrayList 的一份拷貝 listCopy 指向的集合對象和 arrayList 指向的集合對象不是同一個 ArrayList<String> listCopy = (ArrayList<String>)arrayList.clone(); listCopy.remove(0); System.out.println(arrayList); System.out.println(listCopy); } } ~~out:[tom, jack, mary] ~~out:[jack, mary]
public class ArrayListDemo { public static void main(String [] args) { List<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); System.out.println(arrayList); // arrayList 中包含 tom 因此返回 true System.out.println(arrayList.contains("tom")); } } ~~out:[tom, jack, mary] ~~out:true
public class ArrayListDemo { public static void main(String [] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); // 設置 arrayList 容器的容量爲5 arrayList.ensureCapacity(5); System.out.println(arrayList); System.out.println(arrayList.size()); } } ~~out:[tom, jack, mary] ~~out:3
注:這裏也許會奇怪,若是 ensureCapacity() 方法是設置容器的容量,那爲何 arrayList.size() 的值爲 3呢?這裏有一個誤區,容器的容量指的是容器內部 Object[] 數組的容量,而 size() 方法獲得的是存儲於容器中實際對象的個數,上面的示例中, arrayList 存儲了3個 字符串對象,所以 size() 返回的是 3數組
public class ArrayListDemo { public static void main(String [] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); // forEach 能夠用來遍歷當前集合 arrayList.forEach(new Consumer<String>() { @Override public void accept(String t) { System.out.println(t); } }); // 上述循環集合也能夠寫成 arrayList.forEach(e -> System.out.println(e)); } } ~~out:tom ~~out:jack ~~out:mary
public class ArrayListDemo { public static void main(String [] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); // 獲取集合中 索引爲 0 的元素 System.out.println(arrayList.get(0)); } } ~~out:tom
public class ArrayListDemo { public static void main(String [] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("tom"); arrayList.add("mary"); // 當前 arrayList 添加了兩個 tom , indexOf 返回 tom 第一次出現的索引值 0 System.out.println(arrayList.indexOf("tom")); } } ~~out:0
public class ArrayListDemo { public static void main(String [] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); // isEmpty() 方法判斷當前集合是否爲空 當前 arrayList 不爲空,返回 falsse,若爲空 返回 true System.out.println(arrayList.isEmpty()); } } ~~out:false
public class ArrayListDemo { public static void main(String [] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); // iterator() 方法返回一個 Iterator 對象,能夠用此 Iterator 對象來便利當前集合 Iterator<String> iterator = arrayList.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } } } ~~out:tom ~~out:jack ~~out:mary
public class ArrayListDemo { public static void main(String [] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("tom"); arrayList.add("mary"); // lastIndexOf 方法返回 tom 在集合中最後一次出現的索引值 2 System.out.println(arrayList.lastIndexOf("tom")); } } ~~out:2
public class ArrayListDemo { public static void main(String [] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); // listIterator 方法返回一個 ListIterator 對象 ListIterator<String> listIterator = arrayList.listIterator(); // 將遊標定位到 arrayList 集合末尾 for(;listIterator.hasNext();) { listIterator.next(); } // 逆序遍歷 arrayList 集合 for(;listIterator.hasPrevious();) { System.out.println(listIterator.previous()); } } } ~~out:mary ~~out:jack ~~out:tom
public class ArrayListDemo { public static void main(String [] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); arrayList.add("jerry"); // listIterator(1) 返回從索引值 1 開始(包含1)到集合的終點爲止的 ListIterator 對象 (正序) ListIterator<String> listIterator = arrayList.listIterator(1); // 當前 ListIterator 對象 只包含 arrayList集合中 索引值 1~3 的元素 for(;listIterator.hasNext();) { System.out.println(listIterator.next()); } } } ~~out:jack ~~out:mary ~~out:jerry
public class ArrayListDemo { public static void main(String [] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); // remove 方法移除指定索引位置 0 的元素 arrayList.remove(0); System.out.println(arrayList); } } ~~out:[jack, mary]
public class ArrayListDemo { public static void main(String [] args) { ArrayList<String> arrayList = new ArrayList<>(); ArrayList<String> arrayList2 = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); arrayList.add("jerry"); arrayList2.add("tom"); arrayList2.add("jack"); // 在 arrayList 中 移除 arrayList2 中的全部元素 arrayList.removeAll(arrayList2); System.out.println(arrayList); } } ~~out:[mary, jerry]
public class ArrayListDemo { public static void main(String [] args) { ArrayList<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); arrayList.add("jerry"); // removeIf 方法 指定一個 Predicate 接口 根據接口的具體實現來移除 arrayList 中的元素 此處指定移除 字符串的長度大於 4 的元素,所以 jerry 被移除了 arrayList.removeIf(new Predicate<String>(){ @Override public boolean test(String t) { return t.length() > 4; } }); // 這是 java8 的寫法 arrayList.removeIf(e -> e.length() > 4); System.out.println(arrayList); } } ~~out:[tom, jack, mary]
// 該方法用 portected 修飾符修飾 外部沒法訪問
public class ArrayListDemo { public static void main(String [] args) { List<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); arrayList.add("jerry"); // replaceAll 方法 提供一個 UnaryOpertor 接口,用接口實現返回的結果來替換 arrayList 中的元素,arrayList 中的元素都被替換成了 mike arrayList.replaceAll(new UnaryOperator<String>() { String other = "mike"; public String apply(String t) { return other; } }); System.out.println(arrayList); } } ~~out:[mike, mike, mike, mike]
public class ArrayListDemo { public static void main(String [] args) { List<String> arrayList = new ArrayList<>(); List<String> arrayList2 = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); arrayList2.add("tom"); arrayList2.add("jack"); // retainAll 方法會移除 arrayList 中 不包含 arrayList2 中元素的部分元素,arrayList2 中不包含 mary ,所以 arrayList 中的marry 被移除了 arrayList.retainAll(arrayList2); System.out.println(arrayList); } } ~~out:[tom, jack]
public class ArrayListDemo { public static void main(String [] args) { List<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); // set 方法將 arrayList 中索引值爲 0 的元素替換爲 mike arrayList.set(0,"mike"); System.out.println(arrayList); } } ~~out:[mike, jack, mary]
public class ArrayListDemo { public static void main(String [] args) { List<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("jack"); arrayList.add("mary"); // size 方法返回當前 arrayList 中存在元素的容量 System.out.println(arrayList.size()); } } ~~out:3
public static void main(String [] args) { Student student = new Student("tom",10); Student student1 = new Student("jack",20); Student student2 = new Student("mary",30); Student student3 = new Student("jerry",40); List<Student> arrayList = new ArrayList<>(); arrayList.add(student); arrayList.add(student1); arrayList.add(student2); arrayList.add(student3); // sort 提供一個排序的接口 根據接口的實現來排序 arrayList 中的元素 arrayList.sort(new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { return o2.getAge() - o1.getAge(); } }); System.out.println(arrayList); } ~~out:[Student [name=jerry, age=40], Student [name=mary, age=30], Student [name=jack, age=20], Student [name=tom, age=10]]
public class ArrayListDemo { public static void main(String [] args) { List<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("mary"); arrayList.add("jerry"); // spliterator() 方法返回一個 Spliterator 對象 Spliterator<String> spliterator = arrayList.spliterator(); } }
public class ArrayListDemo { public static void main(String [] args) { List<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("mary"); arrayList.add("jerry"); arrayList.add("mike"); // subList() 方法從 arrayList 中截取指定開始位置到結束位置的元素(包前不包後),返回一個新的集合 arrayList2 List<String> arrayList2 = arrayList.subList(0, 2); System.out.println(arrayList2); } } ~~out:[tom, mary]
public class ArrayListDemo { public static void main(String [] args) { List<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("mary"); arrayList.add("jerry"); arrayList.add("mike"); // toArray() 方法將 arrayList 轉換爲 Objcet[] 數組 Object [] object = arrayList.toArray(); for(Object obj:object) { System.out.println(obj); } } } ~~out:tom ~~out:mary ~~out:jerry ~~out:mike
public class ArrayListDemo { public static void main(String [] args) { List<String> arrayList = new ArrayList<>(); arrayList.add("tom"); arrayList.add("mary"); arrayList.add("jerry"); arrayList.add("mike"); // toArray(T[] a) 方法將 arrayList 轉換爲 String 類型的數組,接收的也是一個 String 類型的數組 String[] string = arrayList.toArray(new String[4]); for(String obj:string) { System.out.println(obj); } } } ~~out:tom ~~out:mary ~~out:jerry ~~out:mike
public class ArrayListDemo { public static void main(String [] args) { // 要調用 trimToSize 方法 要顯式設置 arrayList 的容量 ArrayList<String> arrayList = new ArrayList<>(10); arrayList.add("tom"); arrayList.add("mary"); arrayList.add("jerry"); arrayList.add("mike"); // trimToSize 方法將 arrayList 的容量設爲當前存儲元素的容量,當前 arrayList 申請的容量爲 10 ,但存儲只用了 4 ,trimToSize 就將當前容量設置成了 4 arrayList.trimToSize(); } }