一、定義和特點
List和Set都是Java中常用的集合類型,它們的定義和特點有所不同。
List是一個有序集合,可以存儲重複的元素。常見的實現類有ArrayList和LinkedList。ArrayList是基於動態數組實現的,查詢較快;而LinkedList是基於雙向鏈表實現的,在插入和刪除元素時表現更好。
Set是一個不允許存儲重複元素的集合。常見的實現類有HashSet和TreeSet。HashSet是基於哈希表實現的,查詢速度較快;而TreeSet是基於紅黑樹實現的,可以對元素進行排序。
二、添加元素
在List中,添加元素的方法是add(),可以添加重複的元素。在Set中,添加元素的方法也是add(),但若添加的元素已經存在於Set中,則添加不成功。
//List示例代碼List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("apple");System.out.println(list); //輸出結果為:[apple, banana, apple]//Set示例代碼Set<String> set = new HashSet<>();set.add("apple");set.add("banana");set.add("apple");System.out.println(set); //輸出結果為:[apple, banana]
三、獲取元素
List和Set都提供了獲取元素的方法,List中的方法是get(),Set中則沒有此方法。因為Set中的元素是無序的,所以不能通過下標獲取。
//List示例代碼List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");System.out.println(list.get(0)); //輸出結果為:apple//Set示例代碼Set<String> set = new HashSet<>();set.add("apple");set.add("banana");set.add("orange");//set.get(0)會報錯
四、刪除元素
List和Set都提供了刪除元素的方法,List中的方法是remove(),Set中的方法也是remove()。在List中,可以指定要刪除的元素的下標或元素本身;在Set中,只能指定元素本身。
//List示例代碼List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");list.remove(1);System.out.println(list); //輸出結果為:[apple, orange]//Set示例代碼Set<String> set = new HashSet<>();set.add("apple");set.add("banana");set.add("orange");set.remove("banana");System.out.println(set); //輸出結果為:[apple, orange]
五、遍歷集合
List和Set的遍歷方式是相同的,都可以使用增強for循環或迭代器。
//List示例代碼List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");for(String fruit : list){ System.out.println(fruit);}//Set示例代碼Set<String> set = new HashSet<>();set.add("apple");set.add("banana");set.add("orange");for(String fruit : set){ System.out.println(fruit);}
六、使用場景
由於List可以存儲重複元素,所以適合於需要根據元素的下標進行隨機訪問、並且元素順序固定的情況。例如需要記錄學生的考試成績,按照學生姓名的首字母順序排序。
而在需要對元素進行去重操作時,就需要使用Set。例如需要記錄聚會上參加的人員名單。
七、總結
List和Set是Java集合框架中常用的兩種集合類型,它們的定義和特點有所不同。List是有序的、可以存儲重複的元素;Set是無序的、不允許存儲重複元素。在實際開發中,選擇使用哪種集合類型需要根據具體的需求進行綜合考慮。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/242156.html