在Java语言中,Set,List,Map 三者各自的特点和数据结构类型

在中文中,Java 集合框架中的 Set、List 和 Map 接口通常被翻译为:

  • Set:集合
  • List:列表
  • Map:映射

这些名称反映了它们在集合框架中的作用和特点:

  • 集合(Set):用于存储一组不重复的元素,元素之间没有顺序关系。
  • 列表(List):用于存储有序的元素集合,元素可以重复,且可以按索引访问。
  • 映射(Map):用于存储键值对(key-value pairs),每个键映射到一个值,键不能重复,但值可以重复。

Set、List 和 Map 三者都是接口,各自有不同的实现,每种实现都基于不同的数据结构。以下是这些接口的常用实现及其对应的数据结构类型:

一、Set 接口

Set 接口的常用实现及其数据结构:

1. HashSet
数据结构:基于哈希表(HashMap)实现。
特点:元素无序,不允许重复,提供常数时间复杂度的添加、删除和查找操作。

2. LinkedHashSet
数据结构:基于哈希表和链表实现,继承自 HashSet。
特点:元素有序(按照插入顺序),不允许重复,提供常数时间复杂度的添加、删除和查找操作。

3. TreeSet
数据结构:基于红黑树实现。
特点:元素有序(自然顺序或指定顺序),不允许重复,提供对数时间复杂度的添加、删除和查找操作。

Set 接口的常用方法:

  • add(E e):向集合中添加一个元素。
  • addAll(Collection<? extends E> c):将指定集合中的所有元素添加到此集合中。
  • remove(Object o):从此集合中移除指定元素。
  • removeAll(Collection<?> c):移除此集合中的所有元素,这些元素也包含在指定的集合中。
  • contains(Object o):如果此集合包含指定元素,则返回 true。
  • isEmpty():如果此集合为空,则返回 true。
  • size():返回此集合中的元素数量。
  • iterator():返回此集合的迭代器。
  • clear():移除此集合中的所有元素。

二、List 接口

List 接口的常用实现及其数据结构:

1. ArrayList
数据结构:基于动态数组实现。
特点:元素有序,允许重复,提供快速的随机访问操作,但在列表中间插入或删除元素时可能较慢。

2. LinkedList
数据结构:基于双向链表实现。
特点:元素有序,允许重复,提供快速的插入和删除操作,但随机访问速度较慢。

3. Vector
数据结构:基于动态数组实现,与 ArrayList 类似,但它是同步的。
特点:线程安全,元素有序,允许重复,提供快速的随机访问操作。

List 接口的常用方法:

  • add(int index, E element):在指定位置插入元素。
  • add(E element):在列表末尾添加一个元素。
  • addAll(int index, Collection<? extends E> c):在指定位置开始处将指定集合中的所有元素插入到此列表中。
  • get(int index):返回列表中指定位置的元素。
  • set(int index, E element):用指定元素替换列表中指定位置的元素。
  • remove(int index):移除列表中指定位置的元素。
  • indexOf(Object o):返回此列表中指定元素第一次出现的索引。
  • lastIndexOf(Object o):返回此列表中指定元素最后一次出现的索引。
  • size():返回列表中的元素数量。
  • isEmpty():如果列表为空,则返回 true。
  • clear():移除列表中的所有元素。

三、Map 接口

Map 接口的常用实现及其数据结构:

1. HashMap
数据结构:基于哈希表实现。
特点:键值对无序,键不允许重复,提供常数时间复杂度的添加、删除和查找操作。

2. LinkedHashMap
数据结构:基于哈希表和链表实现,继承自 HashMap。
特点:键值对有序(按照插入顺序或访问顺序),键不允许重复,提供常数时间复杂度的添加、删除和查找操作。

3. TreeMap
数据结构:基于红黑树实现。
特点:键值对有序(自然顺序或指定顺序),键不允许重复,提供对数时间复杂度的添加、删除和查找操作。

4. Hashtable
数据结构:基于哈希表实现,与 HashMap 类似,但它是同步的。
特点:线程安全,键值对无序,键不允许重复,提供常数时间复杂度的添加、删除和查找操作。

Map 接口的常用方法:

  • put(K key, V value):将指定的值与此映射中的指定键关联。
  • get(Object key):返回指定键所映射的值。
  • remove(Object key):如果存在一个键的映射关系,则将其从映射中移除。
  • containsKey(Object key):如果此映射包含指定的键,则返回 true。
  • containsValue(Object value):如果此映射将一个或多个键映射到指定值,则返回 true。
  • keySet():返回映射中包含的键的 Set 视图。
  • values():返回映射中包含的值的 Collection 视图。
  • entrySet():返回映射中包含的键值映射关系的 Set 视图。
  • size():返回映射中的键值映射关系数。
  • isEmpty():如果映射不包含键值映射关系,则返回 true。
posted @ 2025-08-02 15:39  junjunyi  阅读(54)  评论(0)    收藏  举报