一、Java集合框架中常用的有哪些类?
Collection接口:List接口(ArrayList类、LinkedList类)、Set接口(HashSet类、TreeSet类)。
Map接口:HashMap类、TreeMap类、HashTable类
List和Set的区别:
List | Set |
---|---|
List及实现类是可变大小的列表,适用于按数值索引访问元素。 | Set集合存储顺序无序,不可以保存重复数据。 |
二、ArrayList和LinkedList的区别
ArrayList | LinkedList |
---|---|
1、底层实现是数组2、占内存:少3、随机访问:Arraylist优于LinkedList | 1、底层实现是链表(双向链表)2、占内存:多,因为除了存储数据,还要存储两个指针。3、插入和删除:LinkedList优于Arraylist |
//ArrayList
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(8);
list.add(3);
System.out.println(list);//[1,8,3]
//LinkedList
LinkedList<Integer> linkedList = new LinkedList<>();list.add(1);
list.add(8);
list.add(3);
System.out.println(list);//[1,8,3]
三、HashSet和TreeSet的区别
HashSet | TreeSet |
---|---|
1、不支持排序,元素的顺序可能变化2、元素可以是null,但只能放入一个null3、底层采用HashMap实现4、底层实现采用哈希表 | 1、支持排序,元素是排好序的2、元素不能是null3、底层采用TreeMap实现4、底层实现采用二叉树(红黑树) |
//HashSet
Set<Integer> set = new HashSet<>();
set.add(10);
set.add(10);//利用HashMap来实现数据不重复
set.add(50);
set.add(30);
System.out.println(set+" ");//输出10 50 30
//TreeSet
TreeSet set = new TreeSet();
set.add(10);
set.add(10);
set.add(50);
set.add(30);
System.out.println(set+" ");//输出10 30 50