集合框架:List、Set、Map 区别 ;集合数组的区别;常用方法说明;@SuppressWarnings 注解
(更新中....)集合框架:List、Set、Map 区别 ;
集合数组的区别;
常用方法
一、集合框架
-
Collection接口:单列集合,用来存储一个个的对象
-
List接口:存储有序的、可重复的数据:ArrayList、LinkedList、Vector
-
set接口:存储无序的、不可重复的数据 :HashSet、LinkedHashSet、TreeSet
-
map接口:key-value 键值对:HashMap、LinkedHashMap、TreeMap、Hashtable
1、面试题:ArrayList、LinkedList、Vector三者的异同?
答:相同:三个类是实现了List接口;存储数据的特点相同:存储有序的、可重复的数据;
不同点:
Collection接口:单列集合,用来存储一个个的对象
a. List接口 :存储有序的、可重复的数据 -->"动态数组"
-
ArrayList:作为List接口的主要实现类,线程不安全,效率高;底层使用Object[] elementData存储;查询效率高
-
LinkedList:对于频繁的插入和删除操作,使用此类的效率高;底层使用双向链表存储
-
Vector:作为List接口的古老实现,线程安全、效率低;底层使用Object[] elementData存储
b. Set集合
Collection接口:单列集合,用来存储一个个的对象
set接口:存储无序的、不可重复的数据
HashSet:作为set接口的主要实现类;线程不安全的;可以存储null值
LinkedHashSet:作为HashSet子类,遍历其内部数据时,可以按照添加的顺序遍历,对于频繁的遍历操作, LinkedHashSet效率高于HashSet.
TreeSet:可以按照添加对象的指定属性进行排序
c. Map 集合
Map:双列数据,存储key-value对的数据
HashMap:作为Map的主要实现类:线程不安全,效率高;存储null的key和value;
LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历.
TreeMap:保证按照添加的key-value对进行排序,实现排序遍历。此时考虑key的自然排序或者定制排序,底层使用红黑树;
Hashtable:作为古老的实现类:线程安全的,效率低;不能存储null的key和value;
①List 与Set区别:
1、List:有序序列集合,按照我们放入元素的顺序排列,长度可变,可以通过索引下标获取
2、Set:无序集合,不能有重复元素,长度可变,只能迭代获取元素
Map:键-值对形式的集合,键不能重复,键可以为null值,有且只有一个null值,所有map的方法都是围绕键进行的
②数组集合区别:
数组:数组的使用具有局限性,存储的容量有限
集合:为了解决数组的局限性,引入了容器类的概念,动态变化容量,最常见的容器类就是ArrayList
补充:@SuppressWarnings 是什么含义
①@SuppressWarnings(“rawtypes”)
SuppressWarnings压制警告,即去除警告
rawtypes是说传参时也要传递带泛型的参数
②@SuppressWarnings(“unchecked”)
unchecked 执行了未检查的转换时的警告
③@SuppressWarnings({“static-access”, “unchecked”})
指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。
二、ArrayList进行存储(如图):ArrayList 实现了接口 List
三、集合框架常用方法
set方法说明:
toArray方法说明:
四、引入泛型 ---List为例