「这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战」。
1. JAVA中集合和数组的区别
相同点:数组和集合类同是容器。
不同点:
1.数组的长度是固定的,集合的长度是可变的。
2.数组只能存储同类型的对象,集合可以存储不同类型的对象。
3.集合只能存储对象不能存储基本类型
2.Collection和Collections的区别
Collection 是集合类的上级接口,继承与他的接口主要有 Set 和 List Queue队列.
Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
3.ArrayList和LinkedList 和Vector的区别
ArrayList:是底层实现是数组,不同步,非线程安全,效率高,查询快,增删慢。
LinkedList :底层实现是双向链表,不同步,非线程安全,效率高,查询慢,增删快。
Vector:底层实现是数组,同步,线程安全,效率低,查询快,增删慢。
注:可以用Collections类中的静态方法synchronizedList()对ArrayList和LinkedList进行调用即可
4. list/set/map的区别
List 有序的可重复集合,可以在任意位置增加删除元素,用 Iterator 实现单向遍历,也可用ListIterator 实现双向遍历。
Set 不包含重复元素的集合,set中最多包含一个 null 元素,只能用 Iterator 实现单项遍历, Set 中没有同步方法。
Map 中的每一个元素包含一个键和一个值,成对出现,键对象不可以重复,值对象可以重复。
5.HashSet和TreeSet和LinkedHashSet区别
1.HashSet:基于HashMap实现,无序的,集合元素可以是null,但只能存入一个null
2.TreeSet:基于TreeMap实现,底层是红黑树,有序的,根据元素的自然顺序进行排序,不能存放null元素
3.LinkedHashSet:有序的,元素严格按照放入的顺序排列,不能有相同元素,可以有一个null元素
总结: 通过以上特点可以分析出,三者都保证了元素的唯一性,如果无排序要求可以选用HashSet;如果想取出元素的顺序和放入元素的顺序相同,那么可以选用LinkedHashSet。如果想插入、删除立即排序或者按照一定规则排序可以选用TreeSet。