Java中List、Set和Map接口的对比
Collection接口
Collection 层次结构中的根接口,即Collection是集合类的基本接口。它的子接口有List、Set。
接口
List是一种能包含重复元素的有序集合(也称序列)。它实现的接口有ArrayList、LinkedList、Stack等。
Set接口
数学上的集合(set)??
Set是一种不包含重复元素的Collection。更正式地说,set不包含满足e1.equals(e2)的元素对e1和e2,并且最多包含一个null元素。
下表是List、Set与Map及其以实现类的对比
|
List接口 |
Set接口 |
Map接口 |
参数的含义 |
该容器所存放值的类型 |
该容器所存放值的类型 |
K - 此映射所维护的键的类型,V - 映射值的类型 |
所在包 |
java.util |
java.util |
java.util |
父类 |
Collection接口 |
Collection接口 |
无 |
区别 |
List是一种能包含重复元素的有序集合。包含除父类集成的接口方法以外的方法。 |
Set中的元素是不重复的,且至多包含一个null。仅包含从父类集成的接口方法。 |
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射一个值。 |
以下区别各自的常用以实现类
已实现的类 |
ArrayList 类 |
HashSet 类 |
HashMap 类 |
参数的含义 |
该容器所存放值的类型 |
该容器所存放值的类型 |
K - 此映射所维护的键的类型,V - 映射值的类型 |
说明 |
List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括null 在内的所有元素。 |
此类实现 Set 接口,由哈希表(实际上是一个HashMap实例)支持。它不保证 set的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。 |
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。 |
增 |
add()将指定的元素添加到此列表的尾部或指定的位置。 |
add(E e)如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。 |
put(K key, V value)在此映射中关联指定值与指定键。 |
删 |
remove()移除此列表中指定位置上的元素或指定的元素。 |
remove(Object o)如果 set中存在指定的元素,则将其移除(可选操作)。 |
remove(Object key)从此映射中移除指定键的映射关系(如果存在)。 |
改 |
set(int index,E element)用指定的元素替代此列表中指定位置上的元素。 |
无 |
无 |
查 |
get(int index)返回此列表中指定位置上的元素。 |
contains(Object o)如果set 包含指定的元素,则返回true。 |
get(Object key)返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回null。 |
长度 |
size()返回此列表中的元素数。 |
size()返回 set 中的元素数(其容量)。 |
size()返回此映射中的键-值映射关系数。 |
遍历方法 |
iterator()返回按适当顺序在列表的元素上进行迭代的迭代器。 |
iterator()返回在此 set 中的元素上进行迭代的迭代器。 |
keySet()返回此映射中所包含的键的 Set 视图。在通过get(key)方法获得value |
遍历方法 |
1. iterator()返回按适当顺序在列表的元素上进行迭代的迭代器。2. toArray()返回按适当顺序包含列表中的所有元素的数组(从第一个元素到最后一个元素)。3. 通过list.size()获取长度后,逐个遍历List集合 |
1. iterator()返回在此 set 中的元素上进行迭代的迭代器。2. toArray()返回一个包含 set中所有元素的数组。 |
keySet()返回此映射中所包含的键的 Set 视图。在通过get(key)方法获得value |
contains()方法 |
contains(Object o)如果列表包含指定的元素,则返回 true。 |
contains(Object o)如果set 包含指定的元素,则返回 true。 |
containsKey(Object key)如果此映射包含对于指定键的映射关系,则返回true。Boolean containsValue(Objectvalue) 如果此映射将一个或多个键映射到指定值,则返回 true。 |
toArray使用例子:
Object[] str = set.toArray();
for(int i=0; i< ; i++) {
System.out.println(str[i].toString());
}