Collection中的接口:List、Set、SortedSet、Queue、第一篇
阿新 • • 發佈:2019-05-10
tps get 兩個 lec indexof 接口 static border 追加
Collection中的子接口:
LIst接口:可以存放重復的內容
Set接口:不能存放重復的內容,所有重復的內容是靠hashCode()和equals()兩個方法區分的
SortedSet接口:可以對集合中的數據進行排序
Queue接口:隊列接口
LIst接口常用的子類:ArrayList、LinkList、Vector
ArrayList:
驗證增加數據的操作:
package com.list; import java.util.ArrayList; import java.util.Collection; import java.util.List;public class ArrayLiatDemo01 { public static void main(String[] args) { List<String> allList = null; //定義List對象 Collection<String> allCollection = null; //定義Collection對象 allList = new ArrayList<String>(); //實例化List對象,只能是String類型 allCollection = newArrayList<String>(); //實例化Collection對象,只能是String類型
/*List<String> allList = new ArrayList<String>();
Collection<String> allCollection = new ArrayList<String>();*/
allList.add("hello"); //從Collection繼承的方法 allList.add(0,"world"); //List的擴充方法 System.out.println(allList); //輸出集合中的內容 allCollection.add("YQ"); //增加數據 allCollection.add("www.qq.com"); //增加數據 System.out.println(allCollection); //輸出集合中的內容 allList.addAll(allCollection); //從Collection繼承的方法,增加一組對象 allList.addAll(0,allCollection); //List自定義方法,增加一組對象 System.out.println(allList); //輸出對象,調用ToString()方法 } }
[world, hello]
[YQ, www.qq.com]
[YQ, www.qq.com, world, hello, YQ, www.qq.com]
從運行結果可以發現List中的add(int index, E element)方法可以在集合中的指定位置添加元素,而其他的兩種add()方法只能是在集合的最後進行元素的追加。
刪除對象:
package com.list; import java.util.ArrayList; import java.util.List; public class ArrayListDemo02 { public static void main(String[] args) { List<String> allList = new ArrayList<String>(); //聲明LIst對象,並實例化List對象,且只能是String類型 allList.add("hello"); //添加元素 allList.add(0, "world"); //此方法為List擴展的增加方法 System.out.println(allList); allList.add("YQ"); //增加元素 allList.add("www.baidu.com"); //增加元素 System.out.println(allList); allList.remove(0); //移除指定位置的元素 System.out.println(allList); allList.remove("hello"); //移除指定內容的元素 System.out.println(allList); } }
[world, hello]
[world, hello, YQ, www.baidu.com]
[hello, YQ, www.baidu.com]
[YQ, www.baidu.com]
輸出全部元素:
package com.list; import java.util.ArrayList; import java.util.List; public class ArrayListDemo03 { public static void main(String[] args) { List<String> allList = new ArrayList<String>(); //聲明LIst對象,並實例化List對象,且只能是String類型 allList.add("hello"); //添加元素 allList.add(0, "world"); //此方法為List擴展的增加方法 System.out.println(allList); allList.add("YQ"); //增加元素 allList.add("www.baidu.com"); //增加元素 System.out.println(allList); System.out.println("由前向後輸出"); for(int i=0;i<allList.size();i++) { System.out.printf(allList.get(i)+","); } System.out.println("\n由後向前輸出"); for(int i=allList.size()-1;i>=0;i--){ System.out.printf(allList.get(i)+","); } } }
[world, hello]
[world, hello, YQ, www.baidu.com]
由前向後輸出
world,hello,YQ,www.baidu.com,
由後向前輸出
www.baidu.com,YQ,hello,world,
測試其他操作:
package com.list; import java.util.ArrayList; import java.util.List; public class ArrayListDemo04 { public static void main(String[] args) { List<String> allList = new ArrayList<String>(); //聲明LIst對象,並實例化List對象,且只能是String類型 System.out.printf("集合操作前是否為空:"+allList.isEmpty()+"\n"); allList.add("hello"); //添加元素 allList.add(0, "world"); //此方法為List擴展的增加方法 System.out.println(allList); allList.add("YQ"); //增加元素 allList.add("www.baidu.com"); //增加元素 System.out.println(allList); String str[] = allList.toArray(new String[] {});//指定的泛型類型 System.out.println("指定數組類型:"); //輸出字符串中的內容 for(int i=0;i<str.length;i++){ System.out.printf(str[i]+"、"); } System.out.println("\n返回對象數組:"); Object obj[] = allList.toArray(); //返回對象數組 for(int i=0;i<obj.length;i++){ //輸出對象數組內容 System.out.printf(obj[i]+"、"); } System.out.print("\n"); List<String> allSub=allList.subList(1,2); //該方法返回的是父list的一個視圖,從fromIndex(包含),到toIndex(不包含) System.out.printf("結合截取:"); for(int i=0;i<allSub.size();i++){ System.out.printf(allList.get(i)+"、"); } System.out.print("\n"); System.out.println(allList.contains("YQ")?"YQ字符串存在!":"YQ字符串不存在!"); System.out.println("YQ字符串的位置:"+allList.indexOf("YQ")); System.out.println("集合操作後是否為空:"+allList.isEmpty()); } }
集合操作前是否為空:true [world, hello] [world, hello, YQ, www.baidu.com] 指定數組類型: world、hello、YQ、www.baidu.com、 返回對象數組: world、hello、YQ、www.baidu.com、 結合截取:world、 YQ字符串存在! YQ字符串的位置:2 集合操作後是否為空:false
Vector子類:
package com.list; import java.util.List; import java.util.Vector; public class VectorDemo01 { public static void main(String[] args) { /*List<String> allList = null; allList = new Vector<String>(); allList.add("hello"); allList.add(0,"world"); allList.add("YQ"); allList.add("www.baidu.com");*/ Vector<String> allList = new Vector<String>(); allList.add("hello"); allList.add(0,"world"); allList.addElement("YQ"); allList.addElement("www.baidu.com"); for(int i=0;i<allList.size();i++) { System.out.printf(allList.get(i)+"、"); } } }
1 world、hello、YQ、www.baidu.com、
ArrayLiat與Vector的區別:
序號 | 比較點 | ArrayList | Vector |
1 | 推出時間 | JDk1.2之後推出,屬於新的操作類 | JDK1.時推出的,屬於舊的操作類 |
2 | 性能 | 采用異步處理方式,性能更高 | 采用同步處理方式,性能更低 |
3 | 線程安全 | 屬於非線程安全的操作類 | 屬於線程安全的操作類 |
4 | 輸出 | 只能使用Iterator、foreach輸出 | 可以使用Iterator、foreach、Enumeration輸出 |
從實際開發來看,ArrayLiat類使用的較多。
LinkedList子類:
為鏈表增加數據:
1 package com.list; 2 3 import java.util.LinkedList; 4 5 public class LinkedListDemo01 { 6 public static void main(String[] args) { 7 LinkedList<String> link = new LinkedList<String>(); 8 link.add("A"); 9 link.add("B"); 10 link.add("C"); 11 System.out.println("初始化鏈表:"+link); 12 link.addFirst("X"); 13 link.addLast("Y"); 14 System.out.println("增加表頭表尾後的鏈表:"+link); 15 16 System.out.print("以FIFO方式輸出:"); 17 for(int i=0;i<link.size();i++){ 18 System.out.printf(link.get(i)+","); 19 } 20 21 System.out.printf("\n element()方法找到表頭:"+link.element()); 22 System.out.printf("\n"+link); 23 System.out.printf("\n prrk()方法找到表頭:"+link.peek()); 24 System.out.printf("\n"+link); 25 System.out.printf("\n poll()找到表頭並刪除表頭:"+link.poll()); 26 System.out.printf("\n"+link); 27 } 28 29 }
1 初始化鏈表:[A, B, C] 2 增加表頭表尾:[X, A, B, C, Y] 3 以FIFO方式輸出:X,A,B,C,Y, 4 element()方法找到表頭:X 5 [X, A, B, C, Y] 6 prrk()方法找到表頭:X 7 [X, A, B, C, Y] 8 poll()找到表頭並刪除表頭:X 9 [A, B, C, Y]
認真看過此篇的小夥伴,如果對你有收獲,請點擊旁邊的小手推薦一下,如果有誤,歡迎指正,謝謝!
版權聲明:此篇為本人原創,轉載請標明出處https://www.cnblogs.com/YQian/p/10843218.html
我的博客園地址:https://www.cnblogs.com/YQian/
Collection中的接口:List、Set、SortedSet、Queue、第一篇