单双列集合总述
Collection[單列集合]接口
有List 和 Set子接口 和Map接口[雙列集合]并列
**1.**List接口 實現類:ArrayList 和 LinkedList ;特點:有序,可重復,有對索引的增刪改查相對操作的方法
a.ArrayList:底層為數組 查詢快[根據地址和索引查找],增刪慢
b.LinkedList:底層為鏈表 查詢慢,增刪快[直接修改地址指向]
**2.**Set接口 實現類:TreeSet 和 HashSet ;特點:無序,不可重復,沒有特有方法,全部繼承父類
a.TreeSet:底層為紅黑樹:會自動排序,需要指定排序順序,有兩種方式指定
(1)實現Comparable接口,重寫compareTo方法
(2)創建比較器Collator,重寫compare方法
b.HashSet:底層為哈希表【鏈表,數組,[鏈表滿8為]紅黑樹】hashCode方法
默認比較地址值,可重寫equals方法和hashCode方法比較屬性,保持元素的唯一性
附圖:
Map[雙列集合]接口
實現類有TreeMap 和 HashMap
**1.**TreeMap:底層為紅黑樹會自動對鍵排序,需要指定排序順序,有兩種方式指定
(1)實現Comparable接口,重寫compareTo方法
(2)創建比較器Comparator,重寫compare方法
**2.**HashSet:底層為哈希表【鏈表,數組,[鏈表滿8為]紅黑樹】hashCode方法
默認比較地址值,可重寫鍵的equals方法和鍵的hashCode方法比較鍵的屬性,保持元素的唯一性
注【HashSet,HashTree不能對其進行排序,只能打印出來的時候排序】
附圖:
集合中的可變參數及初始化賦值
可變參數
//定義一個方法求n個數的和 public class Demo1 {public static void main(String[] args) {int sum = getSum(1, 2, 3, 4, 5);System.out.println(sum);}//參數使用可變參數,如果有并列參數,則需要放在最后private static int getSum(int number,int... arr) {int sum = 0;//number="10";//賦值無效,不能應用于測試類for (int t : arr) {sum += t;}return sum;} }打印結果: ---------------------------------------------------------- 14初始化賦值
// 集合批量添加元素方法 public class Demo2 {public static void main(String[] args) {//List of 集合批量添加元素方法[固定集合,不可再往其中添加元素]//List集合List<String> list = List.of("a", "b", "c", "d", "e");//底存集合不可變//Set集合//傳遞的參數當中不能有重復,否則運行報錯[參數非法添加異常]Set<String> set = Set.of("a", "b", "c", "d", "e");//Map集合//傳遞的參數鍵當中不能有重復,否則運行報錯[參數非法添加異常]Map<String, String> map1 = Map.of("zhangsan", "江蘇", "lisi", "上海");//of Entries提高閱讀性,它會將鍵和值封裝成鍵值對Map<String, String> map2 = Map.ofEntries(Map.entry("zhangsan","江蘇"),Map.entry("lisi","上海"));//可結合集合的帶參構造,實現集合的初始化,之后可繼續添加元素ArrayList<String> list1 = new ArrayList<>(list);//接收的集合泛型范圍要大于List.ofArrayList<Integer> list2 = new ArrayList<>(List.of(5,4,3,2,1));System.out.println(list1);System.out.println(list2);} } 打印結果: -------------------------------------------------------------------- [a, b, c, d, e] [5, 4, 3, 2, 1]注:【集合存儲的都是引用數據類型】
總結
- 上一篇: 处理可能发生的异常
- 下一篇: 公司网络故障怎么处理(公司网络故障怎么处