一、什麼是集合
集合類存放於java.util包中。javascript
集合類型主要有3種:set(集)、list(列表)和map(映射)。java
集合存放的都是對象的引用,而非對象自己。因此咱們稱集合中的對象就是集合中對象的引用。android
簡單來說:集合就是一個放數據的容器,準確的說是放數據對象引用的容器。web
二、集合分類
java集合的全部程序都是保存在java.util這個包中,在整個的類集框架中,其核心的接口爲:List,Set,Map,Iterable,Collection。
三、Collection基礎
3.一、什麼是Collection
Collection是最基本的集合接口,一個Collection表明一組Object,即Collection的元素(Elements)。一些Collection容許相同的元素而另外一些不行。一些能排序而另外一些不行。Java SDK不提供直接繼承自Collection的類,Java SDK提供的類都是繼承自Collection的「子接口」如List和Set。數組
3.二、Collection經常使用方法
int size() 獲取元素個數框架
boolean isEmpty() 是否個數爲 0ide
boolean contains(Object element) 是否包含指定元素測試
boolean add(E element)添加元素,成功時返回 truecode
boolean remove(Object element) 刪除元素,成功時返回 true對象
void clear() 刪除全部元素
import java.util.ArrayList; import java.util.Collection; public class CollectionDemo01 { public static void main(String[] args) { // 測試不帶All的方法 // 建立集合對象 // Collection c = new Collection(); //錯誤,由於接口不能實例化 Collection c = new ArrayList(); // boolean add(Object obj):添加一個元素 // System.out.println("add:"+c.add("hello")); c.add("hello"); c.add("world"); c.add("java"); System.out.println("c:" + c); // boolean remove(Object o):移除一個元素 c.remove("hello"); System.out.println("remove:" + c); // System.out.println("remove:" + c.remove("javaee")); // boolean contains(Object o):判斷集合中是否包含指定的元素 System.out.println("contains:"+c.contains("hello")); System.out.println("contains:"+c.contains("android")); // boolean isEmpty():判斷集合是否爲空 System.out.println("isEmpty:"+c.isEmpty()); //int size():元素的個數 System.out.println("size:"+c.size()); System.out.println("c:" + c); // void clear():移除全部元素 c.clear(); System.out.println("c:" + c); } }
四、Collection操做
4.一、Collection操做集合
boolean containsAll(Collection<?> c) 是否包含指定集合 c 的所有元素
boolean addAll(Collection<? extends E> c) 添加集合 c 中全部的元素到本集合中,若是集合有改變就返回 true
boolean removeAll(Collection<?> c) 刪除本集合中和 c 集合中一致的元素,若是集合有改變就返回 true
boolean retainAll(Collection<?> c) 保留本集合中 c 集合中二者共有的,若是集合有改變就返回 true
package cn.com.tyschool.demo005; import java.util.ArrayList; import java.util.Collection; public class CollectionDemo02 { public static void main(String[] args) { // 建立集合1 Collection c1 = new ArrayList(); c1.add("abc1"); c1.add("abc2"); c1.add("abc3"); c1.add("abc4"); c1.add("abc8"); // 建立集合2 Collection c2 = new ArrayList(); c2.add("abc1"); c2.add("abc2"); c2.add("abc3"); c2.add("abc4"); c2.add("abc5"); c2.add("abc6"); c2.add("abc7"); // boolean addAll(Collection c):添加一個集合的元素 System.out.println("addAll:" + c1.addAll(c2)); System.out.println("c1:" + c1); //boolean removeAll(Collection c):移除一個集合的元素(是一個仍是全部) //只要有一個元素被移除了,就返回true。 System.out.println("removeAll:"+c1.removeAll(c2)); System.out.println("c1:" + c1); //boolean containsAll(Collection c):判斷集合中是否包含指定的集合元素(是一個仍是全部) //只有包含全部的元素,才叫包含 System.out.println("containsAll:"+c1.containsAll(c2)); System.out.println("c1:" + c1); //boolean retainAll(Collection c):兩個集合都有的元素?思考元素去哪了,返回的boolean又是什麼意思呢? //假設有兩個集合A,B。 //A對B作交集,最終的結果保存在A中,B不變。 //返回值表示的是A是否發生過改變。 System.out.println("retainAll:"+c1.retainAll(c2)); System.out.println("c1:" + c1); System.out.println("c2:" + c2); } }
4.二、Collection操做數組
Object[] toArray() 返回一個包含集合中全部元素的數組
<T> T[] toArray(T[] a) 返回一個包含集合中全部元素的數組,運行時根據集合元素的類型指定數組的類型
import java.util.ArrayList; import java.util.Collection; public class CollectionDemo03 { public static void main(String[] args) { // 建立集合對象 Collection c = new ArrayList(); // 添加元素 c.add("hello"); // Object obj = "hello"; 向上轉型 c.add("world"); c.add("java"); // 遍歷 // Object[] toArray():把集合轉成數組,能夠實現集合的遍歷 Object[] objs = c.toArray(); for (int x = 0; x < objs.length; x++) { // System.out.println(objs[x]); // 我知道元素是字符串,我在獲取到元素的的同時,還想知道元素的長度。 // System.out.println(objs[x] + "---" + objs[x].length()); // 上面的實現不了,緣由是Object中沒有length()方法 // 咱們要想使用字符串的方法,就必須把元素還原成字符串 // 向下轉型 String s = (String) objs[x]; System.out.println(s + "---" + s.length()); } } }
五、Collection遍歷
5.一、forEach方法
使用Iterable接口的forEach方法,Iterable是Collection的父接口
public class CollectionDemo04 { public static void main(String[] args) { Collection<String> c = new ArrayList<String>() ; c.add("java") ; c.add("javaweb") ; c.add("javascript") ; c.forEach(ele -> System.out.println(ele)); } }
5.二、利用專門遍歷Collection集合的Iterator類
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionDemo05 { public static void main(String[] args) { Collection<String> c = new ArrayList<String>() ; c.add("java") ; c.add("javaweb") ; c.add("javascript") ; //將集合轉換爲迭代器 Iterator<String> it = c.iterator(); //若是迭代器中還有元素,則返回true。 while(it.hasNext()) { //返回迭代器中的下一個元素 String str = it.next() ; if(str.equals("javaweb")) { it.remove();//刪除迭代器新返回的元素 } System.out.println(str); } System.out.println(c); } }
5.三、forEachRemaining方法
利用專門遍歷Collection集合的Iterator類的forEachRemaining方法
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionDemo06{ public static void main(String[] args) { Collection<String> c = new ArrayList<String>() ; c.add("java") ; c.add("javaweb") ; c.add("javascript") ; Iterator<String> it = c.iterator() ; it.forEachRemaining(str -> System.out.println(str)); } }