参考答案:
List
、Set
和 Map
是 Java 中常用的三种集合类型,它们分别属于 Collection
框架的不同部分。它们之间的主要区别如下:
List
是一个有序的集合,允许存储重复的元素。它实现了 Collection
接口,并且是一个可以按索引访问的集合。List
内的元素是按插入顺序排列的,可以通过索引访问。List
允许存储重复的元素。get(index)
来获取指定位置的元素,并支持通过索引进行修改或删除。ArrayList
:基于动态数组实现,查找速度快,插入删除速度较慢。LinkedList
:基于双向链表实现,插入删除操作快,但查找速度较慢。1List<String> list = new ArrayList<>(); 2list.add("Apple"); 3list.add("Banana"); 4list.add("Apple"); 5System.out.println(list); // 输出:[Apple, Banana, Apple]
Set
是一个不允许重复元素的集合,通常用于存储唯一的元素。Set
继承自 Collection
接口,但不保证元素的顺序。Set
内的元素没有特定的顺序(有些实现如 LinkedHashSet
会保留插入顺序,但大多数实现不保证顺序)。Set
不能包含重复的元素。如果向集合中添加重复元素,添加操作会失败。HashSet
:基于哈希表实现,元素无序,查找和插入操作的时间复杂度是 O(1)。LinkedHashSet
:基于哈希表和链表实现,保持插入顺序。TreeSet
:基于红黑树实现,元素按自然顺序或自定义比较器排序。1Set<String> set = new HashSet<>(); 2set.add("Apple"); 3set.add("Banana"); 4set.add("Apple"); // 不会添加重复的 "Apple" 5System.out.println(set); // 输出:[Apple, Banana]
Map
是一种将键映射到值的集合,包含一组键值对。每个键只能映射到一个值,但不同的键可以映射到相同的值。Map
存储的元素是以键值对(key-value)形式存在,键是唯一的,值可以重复。Map
本身不保证元素的顺序,但一些实现类(如 LinkedHashMap
)会保留插入顺序,TreeMap
会按键排序。Map
中的键是唯一的,不能重复。HashMap
:基于哈希表实现,不保证顺序,允许 null
键和 null
值。LinkedHashMap
:基于哈希表和链表实现,保留插入顺序或访问顺序。TreeMap
:基于红黑树实现,按键的自然顺序或自定义比较器排序。Hashtable
:类似于 HashMap
,但它是同步的,已较少使用。1Map<String, String> map = new HashMap<>(); 2map.put("Apple", "Red"); 3map.put("Banana", "Yellow"); 4map.put("Apple", "Green"); // 键 "Apple" 的值被更新为 "Green" 5System.out.println(map); // 输出:{Apple=Green, Banana=Yellow}
最近更新时间:2024-12-09