一種工具,放在java.util
包中java
單列集合的最頂層接口,定義了全部單列集合的共性方法程序員
方法 | 描述 |
---|---|
boolean add(E e) | 把給定的對象添加到當前集合中 |
boolean isEmpty() | 若是此集合不包含元素,則返回 true 。 |
boolean remove(E e) | 從該集合中刪除指定元素的單個實例(若是存在) |
int size() | 返回此集合中的元素數。 |
boolean contains(E e) | 若是此集合包含指定的元素,則返回 true 。 |
Object[] toArray() | 返回一個包含此集合中全部元素的數組。 |
void clear() | 今後集合中清空全部元素 |
建立集合對象時,使用多態,面向接口編程編程
好比Collection<String> list = new ArrayList<String>();
數組
package collection; import java.util.ArrayList; import java.util.Collection; /** * 面向接口編程 * 增、刪、判空、包含、統計、清空、轉數組 */ public class TestCollection1 { public static void main(String[] args) { // 換了後面的new類型 不影響引用類型的使用 Collection<String> list = new ArrayList<String>(); // Collection<String> list = new HashSet<>(); // 重寫toString方法 System.out.println(list); System.out.println(list.add("A")); System.out.println(list.add("D")); System.out.println(list.add("A")); System.out.println(list.add("B")); System.out.println(list.add("C")); System.out.println(list); //刪除第一個匹配到的 System.out.println(list.remove("A")); System.out.println(list); System.out.println(list.remove("A")); System.out.println(list); Object[] array = list.toArray(); System.out.println(list.contains("A")); System.out.println(list.contains("B")); System.out.println(list.size()); list.clear(); System.out.println(list); System.out.println(list.isEmpty()); for (Object o : array) { System.out.print(o + "\t"); } } }
[] true true true true true [A, D, A, B, C] true [D, A, B, C] true [D, B, C] false true 3 [] true D B C
Iterator主要用於遍歷Collection中的元素安全
迭代:判斷集合中有沒有元素,有就取出,繼續判斷,反覆執行,直到集合中的元素所有取出框架
方法 | 描述 |
---|---|
boolean hasNext() | 若是迭代具備更多元素,則返回 true |
E next() | 返回迭代中的下一個元素 |
default void remove() | 從底層集合中刪除此迭代器返回的最後一個元素 |
package cn; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; /** * 迭代器是一個接口,須要對應實現類對象 * 從Collection集合中的iterator方法獲取該集合的迭代器 * 經常使用方法: hasNext 、 next */ public class TestIteration { public static void main(String[] args) { Collection<Integer> list = new ArrayList<>(); list.add(1); list.add(1); list.add(2); list.add(3); System.out.println(list); System.out.println("=====增強for遍歷======"); for (Integer integer : list) { System.out.print(integer+"\t"); } System.out.println("\n=====迭代器遍歷======"); // 開始時,指向-1下標 Iterator<Integer> iterator = list.iterator(); while (iterator.hasNext()) { System.out.print(iterator.next()+"\t"); } } }
[1, 1, 2, 3] =====下標遍歷====== 1 1 2 3 =====迭代器遍歷====== 1 1 2 3
在平時的使用中仍是更喜歡用加強for遍歷工具
Java 泛型(generics)是 JDK 5 中引入的一個新特性, 泛型提供了編譯時類型安全檢測機制,該機制容許程序員在編譯時檢測到非法的類型。學習
泛型分爲兩種,一種表示屬性,一種表示類測試
ArrayList在定義時,並不知道存儲什麼樣的數據類型this
public class ArrayList<E>{ public boolean add(E e){}; public E get(int index){}; }
但在聲明時添加泛型可指定存儲某種數據類型的數據
ArrayList<String> list = new ArrayList<String>(); // 至關於把數據類型當中參數賦值給E public class ArrayList<String>{ public boolean add(String e){}; public String get(int index){}; }
可用於接口、類、方法
模擬ArrayList集合,自定義泛型的類
public class MyGeneric<E> { private E element; public E getElement() { return element; } public void setElement(E element) { this.element = element; } }
定義時不肯定具體數據類型,建立對象時才肯定
只能做爲方法的參數使用,不能建立對象使用!
泛型上限限定:? extends E —> E類型的子類或自己,本身就是上限
泛型下限限定:? super E —> E類型的父類或自己,本身是下限
技巧:
在建立集合時,也能夠不指定泛型
使用泛型的好處