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());
}