java容器随笔
1.Collection 和 Collections的区别:
Collection是容器list 和 set的父接口,而Collections是容器的辅助类,这个类是辅助容器的操作,例如排序,搜索。。。。。。等操作。
2.List、Set 、Map
List 和 set都是实现的Collection接口,List是允许重复的,用的是特殊的索引来检索数据,而set不允许有重复的对象(用的是obj.equls()方法来判断是否为同一个对象)。
Map 是以键值对配对的进行数据的存储,可以运行多个 键对应 一个值。
Set 和 Map都含有 hashCode 和 排序树 两种实现方式。
3.ArrayList和 LinkedList
ArrayList可以看作是数据的扩展,每添加一个元素时需要给定一个下标,需要重新对数据元素定义下标,所以ArrayList的添加和删除操作比较缓慢,但是因为存在下标,所以它的查询速度较快。
LinkedList 是基于链表的形式的,链表形式在进行添加和删除操作的时候只需要动指定地方的链,不需要对所有元素进行改动,但是LinkedList在操作查询的时候,是需要移动指针的,所以查询的速度相对来说较慢。
ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据
4.HashSet TreeSet LinkedHashSet
都不允许含有重复对象,但存储的方式不同:
(1) Hashset存储方式复杂,但保证了最快的获取速度
(2)TreeSet按照升序保存对象
(3)LinkedHashSet按照添加的顺序保存对象,相对于Hashset的存储速度
5. 可以使用键来查找对象,类似于数组下标。Map.put(key,value)插入数据,Map.get(key)查找数据。键要求唯一。存储方式不是顺序存储,速度快。不必指定Map的尺寸,因为它自己会自动的调整。
(1)HashMap使用最快的查找技术,存储无顺序。
(2)TreeMap按照比较结果升序保存。
(3)LinkedHashMap按照插入顺序保存键,同时保留HashMap的查询速度。