1. 程式人生 > 其它 >集合之Collection介面的常用方法

集合之Collection介面的常用方法

集合分為兩種體系:Collection與Map:兩者都是介面

一:Collection介面下又分為兩種List與Set介面:Collection介面是單列資料

List是有序的元素可以重複又稱為靜態陣列:有3個實現類:ArrayList,LinkedList,Vector

Set無序不可重複,類似於數學定義上的集合:4個實現類:HashSet,LinkedHashSet,TreeSet

****************************************************************************************

二:Map介面是雙列資料,具有對映關係類似函式y=f(x)

5個實現類:HashMap,LinkedHashMap,TreeMap,HashTable,Properties

****************************************************************************************

增強for迴圈本質上還是呼叫迭代器進行遍歷

  1 /**       集合框架的概述
  2  * 一:集合:
  3  * 與陣列一樣對多個數據進行儲存,簡稱java容器
  4  * 二:陣列儲存的特點:
  5  * 1:一旦初始化以後,長度就確定了,
  6  * 2:一旦定義好,陣列的型別就確定了,只能操作此型別的變數資料
7 * 三:陣列儲存的弊端: 8 * 1:一旦初始化以後,長度不可更改 9 * 2:陣列中提供的方法十分有限,而且對於資料的增刪改查操作十分不便,且效率低 10 * 3:獲取陣列中實際元素的個數的需求,陣列沒有現成的屬性或者方法可用 11 * 4:資料儲存資料的特點:序,可重複,對於無序,不可重複的需求不能滿足 12 * 四:集合儲存的優點: 13 * 能夠解決陣列資料儲存的弊端 14 * ****************************************** 15 * 集合框架 16 * java集合可分為Collection與Map兩種體系(兩種都是介面)
17 * 一:Collection介面:單列資料,定義了一組物件的方法的集合 18 * 1:List介面:元素有序,資料可重複的集合 ---習慣上稱為"動態陣列" 19 * ArrayList,LinkedList,Vector 20 * 2:Set介面:元素無序,資料不可重複的集合 ---類似於數學定義上的集合 21 * HashSet,LinkedHashSet,TreeSet 22 * 二:Map介面:雙列資料,儲存具有對映關係"key-value對"的集合---函式y=f(x) 23 * HashMap,LinkedHashMap,TreeMap,HashTable,Properties 24 * ******************************要求 25 *對於collection介面中實現類的物件新增資料obj時,要求obj所在的類重寫equals()方法: 26 * 為了使用contains方法時進行資料或者物件比較時,比較的是內容而不是地址值 27 ***************************** 28 * 增強for迴圈(foreach迴圈):針對於資料集合中的資料進行遍歷 29 * 30 */ 31 public class CollectionTest { 32 @Test 33 public void test() { 34 Collection collection = new ArrayList(); 35 //add(object e):將元素e新增到集合collection中 36 collection.add("aa"); 37 collection.add("bb"); 38 collection.add(132);//基本資料型別自動裝箱成包裝類屬於object的子類 39 collection.add(LocalDateTime.now()); 40 collection.add(new MethodTest("hpp", 23)); 41 //size():獲取新增元素的個數 42 System.out.println(collection.size()); 43 //addAll(Collection c):將傳入的集合c的元素新增到當前集合裡 44 Collection collection2 = new ArrayList(); 45 collection2.add("hpp"); 46 collection2.add(132612); 47 System.out.println(collection.addAll(collection2)); 48 System.out.println(collection); 49 //isEmpty(collection c):判斷集合是否為空 50 Collection collection3 = new ArrayList(); 51 collection3.add(null);//即使集合定義為null,也不為空 52 System.out.println(collection3.isEmpty()); 53 //contains(Object obj):判斷當前集合中是否包含obj 54 System.out.println(collection.contains(new MethodTest("hpp", 23))); 55 //containsAll(Collection c):判斷當前集合中是否存在輸入的集合c 56 System.out.println(collection.containsAll(collection2)); 57 //remove(object obj):從集合中移除元素,判斷是否成功 58 System.out.println(collection.remove(new MethodTest("hpp", 23))); 59 System.out.println(collection); 60 //removeAll(Collection c):求差集,移除當前集合中的c集合的元素,c集合可以有很多當前集合沒有的新元素, 61 // 只要有一個元素與當前集合重複就可以判斷為true, 62 Collection collection4 = new ArrayList(); 63 collection4.add(123456789); 64 collection4.add("hpp"); 65 collection4.add("aa"); 66 System.out.println(collection.removeAll(collection4)); 67 System.out.println(collection); 68 //retainAll(Collection c):求交集;只保留當前集合與c集合共同的元素 69 System.out.println(collection.retainAll(collection2)); 70 System.out.println(collection); 71 //equals(Object obj):判斷當前集合與傳入的形參是否相等,換句話要想返回true,傳入的至少是個集合,再比較 72 System.out.println(collection.equals(collection3)); 73 //hashCode():返回當前物件的雜湊值 74 System.out.println(collection2.hashCode()); 75 //toArray():將當前集合轉換成陣列 76 Object[] array = collection.toArray(); 77 System.out.println(array[0]); 78 /** 79 *****************迭代器iterator*************** 80 */ 81 //iterator():返回一個Iterator(迭代器)介面的例項,只用於遍歷集合 82 collection.add("aa"); 83 collection.add("bb"); 84 collection.add(110); 85 collection.add(LocalDateTime.now()); 86 Iterator iterator = collection.iterator(); 87 //next():按順序單個輸出迭代器中的元素, 88 //System.out.println(iterator.next()); 89 //搭配hasNext()使用while迴圈起到遍歷的作用 90 while (iterator.hasNext()) { 91 Object obj = iterator.next(); 92 if ("aa".equals(obj)) { 93 iterator.remove(); 94 } 95 } 96 //錯誤寫法: System.out.println(collection.iterator().next()); 97 // 因為每次呼叫iterator都會得到一個新的迭代器物件 98 //remove():遍歷時移除此元素 99 System.out.println(collection); 100 //增強for迴圈,內部仍然呼叫迭代器 101 for (Object obj : collection) { 102 System.out.println(obj); 103 } 104 int[] arr = new int[]{1, 2, 4, 79, 45, 27}; 105 /** 106 for(集合元素的型別 區域性變數:集合物件){ 107 System.out.println(區域性變數); 108 } 109 * 110 */ 111 for (int obj:arr){ 112 System.out.println(obj); 113 } 114 } 115 }