List類型本身是可以存放任何對象的,也就是只要是數據都可以存儲的。
如:List.add(new Object());這個語句是不會報錯的。由於Object是任何對象的父類,所以任何的子對象都是可以被List通過add方法進行存放的。
『貳』 list,map,set三個介面存儲元素時各有什麼特點
(一)List
1、可以允許重復的對象。
2、可以插入多個null元素。
3、是一個有序容器,保持了每個元素的插入順序,輸出的順序就是插入的順序。
4、常用的實現類有ArrayList、LinkedList 和 Vector。ArrayList 最為流行,它提供了使用索引的隨意訪問,而 LinkedList 則對於經常需要從 List 中添加或刪除元素的場合更為合適。
(二)Set
1、不允許重復對象。
2、無序容器,你無法保證每個元素的存儲順序,TreeSet通過 Comparator 或者 Comparable。
3、只允許一個 null 元素。
4、Set 介面最流行的幾個實現類是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基於 HashMap 實現的 HashSet。
(三)map
1、Map不是collection的子介面或者實現類。Map是一個介面。
2、Map 的 每個 Entry 都持有兩個對象,也就是一個鍵一個值,Map 可能會持有相同的值對象但鍵對象必須是唯一的。
3.、TreeMap 也通過 Comparator 或者 Comparable 維護了一個排序順序。
4.、Map 里你可以擁有隨意個 null 值但最多隻能有一個 null 鍵。
5、Map 介面最流行的幾個實現類是 HashMap、LinkedHashMap、Hashtable 和 TreeMap。(HashMap、TreeMap最常用)。
(2)匯編的list存儲格式擴展閱讀
list和set、map之間的轉化方式:
1、list轉成set集合
Set<Student>
studentSet=studentList.stream().map(Student::getId).collect(Collectors.toSet());
2、list轉成map
Map<String,Student>
studentMap=studentList.stream().collect(Collectors.toMap(Student::getId,a -> a,(k1,k2)->k1));
3、list轉成map並且根據student中的name進行分組
Map<String,List<Student>>
group=studentList.stream().collect(Collectors.groupingBy(Student::getName));