標籤:
集合是一種容器。集合和數組的不同之處:只用於儲存物件,集合長度可變,數組只能存同一種類型的對象,集合可以存任意對象。 Collection |--List:元素是有序的,元素可以重複,因為該集合提醒有索引 |--ArrayList:底層的資料結構使用的是數組,查詢速度很快,增刪稍慢。是不同步的,容易出安全隱患。單線程用,效率高。 |--LinkedList:底層資料結構使用的是鏈表資料結構,查詢速度慢,增刪快 |--Vetor:底層是數組資料結構。victor是同步的,進步不用了 |--Set:元素無需,不可重複,無索引 |--HashSet :底層資料結構是雜湊表。 |--TreeSet
Collection collection是一個介面其中包含ArrayList 和 LinkedList 和 Vector 三個主要的類集合中儲存的是對象的引用。主要方法介紹:以ArrayList為例 import java.util.*;public class Test { public static void main(String adgs[]) { ArrayList al = new ArrayList(); ArrayList al2 = new ArrayList(); al2.add("ppp"); al2.add("kkk"); //1,,添加元素 al.add("java1"); al.add("java2"); al.add("java3"); al.add("java4"); //2,擷取長度 sop("size:"+al.size()); //3,列印集合 sop(al); //4,刪除元素 al.remove("java2"); //使用該對象的equals來判斷是否相同 sop(al); //5,清空集合 al.clear(); sop(al); al.add("java1"); al.add("java2"); al.add("java3"); al.add("java4"); //6,判斷元素 sop("java1是否存在"+al.contains("java1")); //equals //7,添加集合 addall al.addAll(al2); sop(al); //8,取交集,存放在al中 al.clear(); al2.clear(); al.add("java1"); al.add("java2"); al.add("java3"); al.add("java4"); al2.add("ppp"); al2.add("kkk"); al2.add("java3"); al2.add("java4"); al.retainAll(al2); sop(al); //9,取差集 al/al2 al.removeAll(al2); //10,containsAll() 返回 true or false } public static void sop(Object o) { System.out.println(o); }}
迭代器類:Interator取出並操作元素: 統一了集合元素的取出方式。 使用過程:擷取對象Interator it = collection.iterator();方法 Object it.next()//取出元素 boolean it.hasNext()//判斷是否還有元素可以取出import java.util.*;public class Test { public static void main(String adgs[]) { ArrayList al = new ArrayList(); //1,,添加元素 al.add("java1"); al.add("java2"); al.add("java3"); al.add("java4"); /* Iterator it = al.iterator();//擷取迭代器,用於取出集合中的元素 while(it.hasNext()) sop(it.next()); */ for(Iterator it = al.iterator();it.hasNext();) //這種寫法節省記憶體 sop(it.next()); } public static void sop(Object o) { System.out.println(o); }}
List
List特有的常見方法:凡是可以操作角標的方法都是 增 add(index,element) addAll(index,Collection)刪 remove(index)改 set(index,element)//ele:元素查 get(index) subList(from,to) listIterator()
ArrayListimport java.util.*;public class Test { public static void main(String adgs[]) { ArrayList al = new ArrayList(); //添加元素 al.add("java01"); al.add("java02"); al.add("java03"); sop("元集合"+al); al.add(1,"java09"); sop(al); //刪除指定位置元素 al.remove(2); sop(al); //修改元素 al.set(1, "jjj"); sop(al); //查 sop("1:"+al.get(1)); //擷取所有元素。 for(int x=0;x<al.size();x++) sop("al()"+al.get(x)); //通過 indexOF擷取對象的位置 sop(al.indexOf("java03")); List sub = al.subList(1, 3); sop(sub); } public static void sop(Object o) { System.out.println(o); }}
列表迭代器 import java.util.*;public class Test { public static void main(String adgs[]) { ArrayList al = new ArrayList(); al.add("java01"); al.add("java02"); al.add("java03"); Iterator it = al.iterator(); while(it.hasNext()) { Object obj = it.next(); if(obj.equals("java02")) it.remove(); //講java02從集合中刪除了。但不支援al.add()操作 //會引發異常 sop(obj); } sop(al); } public static void sop(Object o) { System.out.println(o); }} 所以就有了列表迭代器:
LinkedList
特有方法:addFirst(obj);//在LL的最開頭添加objaddLast(obj); getFirst(); //擷取頭,尾getLast(); removeFirst();//擷取元素,但是元素會被刪除。如果沒有元素,會出現異常。removeLast();
ArrayList 練習
重複資料刪除對象,核心在於重寫該對象的equals方法注意類型轉換多態的應用。
Set
Set介面:元素無須,不可重複。 Set的功能是和Collection是一致的 建立對象時建立 HashSet
JAVA 13 (集合架構)