List、Set、Map 之间的区别是什么?
🎈边走、边悟🎈迟早会好 |
一、List
- 有序性:
List
保持元素的插入顺序,即元素按添加的顺序存储和访问。 - 允许重复:
List
可以包含重复的元素。 - 实现类:常用的实现类包括
ArrayList
、LinkedList
和Vector
。 - 访问方式:可以通过索引访问元素,例如
list.get(0)
获取第一个元素。 - 用法场景:适用于需要按顺序访问元素,或频繁插入、删除元素的场景。
-
常用方法:
add(E e)
: 添加元素到列表的末尾。get(int index)
: 获取指定位置的元素。remove(int index)
: 移除指定位置的元素。size()
: 返回列表中的元素数量。contains(Object o)
: 判断列表是否包含指定的元素。indexOf(Object o)
: 返回指定元素在列表中的第一次出现位置。List<String> list = new ArrayList<>(); list.add("Apple"); list.add("Banana"); list.add("Apple"); // 允许重复 System.out.println(list.get(0)); // 输出: Apple System.out.println(list.size()); // 输出: 3 System.out.println(list.contains("Banana")); // 输出: true list.remove(1); // 移除第二个元素
二、Set
- 无序性:
Set
不保证元素的顺序,元素可能按照不同的顺序存储。 - 不允许重复:
Set
不允许包含重复的元素,每个元素都是唯一的。 - 实现类:常用的实现类包括
HashSet
、LinkedHashSet
和TreeSet
。 - 访问方式:没有索引,通常通过迭代器访问元素。
- 用法场景:适用于需要保证元素唯一性,或不关心元素顺序的场景。
-
Set<String> set = new HashSet<>(); set.add("Apple"); set.add("Banana"); set.add("Apple"); // 不允许重复,重复的元素不会被添加 for (String fruit : set) { System.out.println(fruit); }
三、Map
- 键值对存储:
Map
存储键值对,每个键唯一对应一个值。 - 键唯一性:
Map
中的键是唯一的,不允许重复,但值可以重复。 - 实现类:常用的实现类包括
HashMap
、LinkedHashMap
和TreeMap
。 - 访问方式:通过键访问对应的值,例如
map.get(key)
获取对应的值。 - 用法场景:适用于需要通过键快速查找值,或需要存储键值对的场景。
-
Map<String, Integer> map = new HashMap<>(); map.put("Apple", 1); map.put("Banana", 2); map.put("Apple", 3); // 键是唯一的,后一个值会覆盖前一个值 System.out.println(map.get("Apple")); // 输出: 3 System.out.println(map.size()); // 输出: 2 System.out.println(map.containsKey("Banana")); // 输出: true System.out.println(map.containsValue(2)); // 输出: true map.remove("Banana");
🌟感谢支持 听忆.-CSDN博客
🎈众口难调🎈从心就好 |