1.是什么
????List
?和?Map
?是 Java 集合框架中的两个不同接口,它们用于存储不同类型的数据,并具有不同的行为和用途。
List 接口
- 存储类型:
List
?接口用于存储一系列有序的元素集合,允许重复元素。 - 元素:
List
?中的元素可以是任何对象,包括?null
。 - 存储顺序:
List
?接口保证了元素的有序性,元素在列表中的位置称为索引,索引从 0 开始。 - 操作:
List
?接口提供了丰富的操作,如?add
(添加元素)、remove
(删除元素)、get
(根据索引获取元素)等。
Map 接口
- 存储类型:
Map
?接口用于存储键值对(key-value pairs),其中键是唯一的,而值可以重复。 - 键值对:每个键值对都有一个键和一个值,键用于查找值。
- 存储顺序:
Map
?接口不保证元素的顺序,尽管一些实现类(如?TreeMap
)会保持元素的排序。 - 键和值:键和值可以是任何对象,包括?
null
。 - 操作:
Map
?接口提供了丰富的操作,如?put
(添加键值对)、get
(根据键获取值)、remove
(根据键删除键值对)等。
区别
- 存储类型:
List
?存储一系列有序的元素,而?Map
?存储键值对。 - 键和值:
List
?中的元素可以是任意对象,而?Map
?中的键是唯一的,值可以重复。 - 存储顺序:
List
?接口保证了元素的有序性,而?Map
?接口不保证元素的顺序。 - 操作:
List
?提供了丰富的操作,如?add
?和?remove
,而?Map
?提供了键值对的操作,如?put
?和?get
。
示例
假设我们有一个包含字符串的集合:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.TreeMap;
public class ListMapExample {
public static void main(String[] args) {
// List 示例
ArrayList arrayList = new ArrayList<>();
arrayList.add("Apple");
arrayList.add("Banana");
arrayList.add("Cherry");
LinkedList linkedList = new LinkedList<>();
linkedList.add("Apple");
linkedList.add("Banana");
linkedList.add("Cherry");
// Map 示例
HashMap hashMap = new HashMap<>();
hashMap.put("Apple", 1);
hashMap.put("Banana", 2);
hashMap.put("Cherry", 3);
TreeMap treeMap = new TreeMap<>();
treeMap.put("Apple", 1);
treeMap.put("Banana", 2);
treeMap.put("Cherry", 3);
}
}
????????在这个例子中,我们创建了不同类型的?List
?和?Map
?实例,并添加了一些元素。由于?List
?和?Map
?接口不保证元素的顺序,因此添加元素的顺序可能与打印顺序不同。