【java】三大容器类(List、Set、Map)的常用实现类的特点
发布人:shili8
发布时间:2025-01-16 17:20
阅读次数:0
**Java 中的三大容器类**
在 Java 中,集合框架提供了三个主要的容器类:List、Set 和 Map。这些类是 Java 集合框架的核心组成部分,它们提供了一种高效、灵活且易于使用的方式来存储和操作数据。
**1. List**
List 是一种有序的集合,允许重复元素。它提供了以下方法:
* `add(E element)`: 将指定元素添加到列表末尾。
* `remove(Object o)`: 移除列表中首次出现的指定元素。
* `get(int index)`: 返回列表中指定索引处的元素。
* `set(int index, E element)`: 将列表中指定索引处的元素替换为指定元素。
**实现类:ArrayList**
`ArrayList` 是最常用的 List 实现类。它基于动态数组来存储元素,提供了快速的插入和删除操作。
javaimport java.util.ArrayList; public class ArrayListExample { public static void main(String[] args) { // 创建一个空列表 ArrayListlist = new ArrayList<>(); // 添加元素 list.add("Apple"); list.add("Banana"); list.add("Cherry"); // 获取元素 System.out.println(list.get(0)); // Apple // 替换元素 list.set(1, "Date"); System.out.println(list.get(1)); // Date // 移除元素 list.remove("Apple"); System.out.println(list.size()); //2 } }
**实现类:LinkedList**
`LinkedList` 是一种基于链表的 List 实现类。它提供了快速的插入和删除操作,尤其是在列表的头部或尾部。
javaimport java.util.LinkedList; public class LinkedListExample { public static void main(String[] args) { // 创建一个空列表 LinkedListlist = new LinkedList<>(); // 添加元素 list.add("Apple"); list.add("Banana"); list.add("Cherry"); // 获取元素 System.out.println(list.getFirst()); // Apple // 替换元素 list.set(1, "Date"); System.out.println(list.get(1)); // Date // 移除元素 list.removeFirst(); System.out.println(list.size()); //2 } }
**实现类:Vector**
`Vector` 是一种基于动态数组的 List 实现类。它提供了线程安全的操作,但性能较差。
javaimport java.util.Vector; public class VectorExample { public static void main(String[] args) { // 创建一个空列表 Vectorlist = new Vector<>(); // 添加元素 list.add("Apple"); list.add("Banana"); list.add("Cherry"); // 获取元素 System.out.println(list.firstElement()); // Apple // 替换元素 list.set(1, "Date"); System.out.println(list.get(1)); // Date // 移除元素 list.remove(0); System.out.println(list.size()); //2 } }
**2. Set**
Set 是一种无序的集合,不能包含重复元素。它提供了以下方法:
* `add(E element)`: 将指定元素添加到集合中。
* `remove(Object o)`: 移除集合中首次出现的指定元素。
**实现类:HashSet**
`HashSet` 是最常用的 Set 实现类。它基于哈希表来存储元素,提供了快速的查找和删除操作。
javaimport java.util.HashSet; public class HashSetExample { public static void main(String[] args) { // 创建一个空集合 HashSetset = new HashSet<>(); // 添加元素 set.add("Apple"); set.add("Banana"); set.add("Cherry"); // 移除元素 set.remove("Apple"); System.out.println(set.size()); //2 // 检查是否包含元素 System.out.println(set.contains("Banana")); // true } }
**实现类:LinkedHashSet**
`LinkedHashSet` 是一种基于链表的 Set 实现类。它提供了快速的插入和删除操作,尤其是在集合的头部或尾部。
javaimport java.util.LinkedHashSet; public class LinkedHashSetExample { public static void main(String[] args) { // 创建一个空集合 LinkedHashSetset = new LinkedHashSet<>(); // 添加元素 set.add("Apple"); set.add("Banana"); set.add("Cherry"); // 移除元素 set.remove("Apple"); System.out.println(set.size()); //2 // 检查是否包含元素 System.out.println(set.contains("Banana")); // true } }
**实现类:TreeSet**
`TreeSet` 是一种基于二叉树的 Set 实现类。它提供了快速的查找和删除操作,尤其是在集合有序的情况下。
javaimport java.util.TreeSet; public class TreeSetExample { public static void main(String[] args) { // 创建一个空集合 TreeSetset = new TreeSet<>(); // 添加元素 set.add("Apple"); set.add("Banana"); set.add("Cherry"); // 移除元素 set.remove("Apple"); System.out.println(set.size()); //2 // 检查是否包含元素 System.out.println(set.contains("Banana")); // true } }
**3. Map**
Map 是一种无序的集合,用于存储键值对。它提供了以下方法:
* `put(K key, V value)`: 将指定键值对添加到映射中。
* `get(Object key)`: 返回映射中指定键的值。
* `remove(Object key)`: 移除映射中首次出现的指定键。
**实现类:HashMap**
`HashMap` 是最常用的 Map 实现类。它基于哈希表来存储键值对,提供了快速的查找和删除操作。
javaimport java.util.HashMap; public class HashMapExample { public static void main(String[] args) { // 创建一个空映射 HashMapmap = new HashMap<>(); // 添加键值对 map.put("Apple",1); map.put("Banana",2); map.put("Cherry",3); // 获取值 System.out.println(map.get("Apple")); //1 // 移除键值对 map.remove("Apple"); System.out.println(map.size()); //2 } }
**实现类:LinkedHashMap**
`LinkedHashMap` 是一种基于链表的 Map 实现类。它提供了快速的插入和删除操作,尤其是在映射的头部或尾部。
javaimport java.util.LinkedHashMap; public class LinkedHashMapExample { public static void main(String[] args) { // 创建一个空映射 LinkedHashMapmap = new LinkedHashMap<>(); // 添加键值对 map.put("Apple",1); map.put("Banana",2); map.put("Cherry",3); // 获取值 System.out.println(map.get("Apple")); //1 // 移除键值对 map.remove("Apple"); System.out.println(map.size()); //2 } }
**实现类:TreeMap**
`TreeMap` 是一种基于二叉树的 Map 实现类。它提供了快速的查找和删除操作,尤其是在映射有序的情况下。
javaimport java.util.TreeMap; public class TreeMapExample { public static void main(String[] args) { // 创建一个空映射 TreeMapmap = new TreeMap<>(); // 添加键值对 map.put("Apple",1); map.put("Banana",2); map.put("Cherry",3); // 获取值 System.out.println(map.get("Apple")); //1 // 移除键值对 map.remove("Apple"); System.out.println(map.size()); //2 } }
综上所述,Java 中的 List、Set 和 Map 都提供了多种实现类,每个实现类都有其特点和使用场景。选择合适的实现类可以显著提高代码的性能和可维护性。