Java List、Set、Map 之间的区别是什么?
在Java中,List
、Set
和 Map
是三种不同的集合接口,用于存储和操作不同类型的数据。
1. List
接口:
- 特点:
- 有序:元素的顺序与插入顺序一致。
- 允许重复:可以包含重复的元素。
- 可以通过索引访问元素。
示例代码:
List<String> list = new ArrayList<>();
list.add("Item 1");
list.add("Item 2");
list.add("Item 3");
list.add("Item 1"); // 允许重复System.out.println(list); // 输出:[Item 1, Item 2, Item 3, Item 1]
2. Set
接口:
- 特点:
- 无序:元素在集合中没有明确的顺序。
- 不允许重复:不能包含重复的元素。
示例代码:
Set<String> set = new HashSet<>();
set.add("Item 1");
set.add("Item 2");
set.add("Item 3");
set.add("Item 1"); // 不允许重复System.out.println(set); // 输出:[Item 1, Item 2, Item 3]
3. Map
接口:
- 特点:
- 无序:键值对的顺序不一定与插入顺序一致。
- 键唯一:每个键在
Map
中是唯一的。 - 值可重复:不同的键可以映射到相同的值。
示例代码:
Map<String, Integer> map = new HashMap<>();
map.put("Key 1", 1);
map.put("Key 2", 2);
map.put("Key 3", 3);
map.put("Key 1", 4); // 键重复,会覆盖前一个值System.out.println(map); // 输出:{Key 1=4, Key 2=2, Key 3=3}
总结:
- List: 有序、可重复,通过索引访问元素。
- Set: 无序、不可重复。
- Map: 无序、键唯一、值可重复,通过键值对存储和访问数据。
选择使用哪种集合类型取决于你的需求。例如,如果需要保留元素的顺序并允许重复,可以选择使用 List
;如果不允许重复且无需保留顺序,可以选择使用 Set
;如果需要使用键值对存储数据,可以选择使用 Map
。