Java:集合类(List、Set、Map)
一、集合器的继承关系
二、Collection接口
Collection是一个接口不能直接只用,但是提供了添加元素、删除元素、管理数据的方法。
方法 | 功能描述 |
---|---|
add(E e) | 将指定的对象添加到集合中 |
Remove(Object o) | 将指定的对象从集合中移除 |
isEmpty() | 判断该集合是否为空,为空返回true,反之为false |
iterator() | 迭代器,可以用于遍历集合中的对象 |
size() | 返回int类型,为该集合上的元素个数 |
接下来展示一下迭代器的使用
public static void main(String[] args){
Collection<String> collection = new ArrayList<>();
collection.add(
Iterator<String> it = collection.iterator();//it的类型要根据Collection里存放的类型而定
while(it.hasNext()){
String str = (String)it.next();//Iterator的next()方法返回值是Object类型,所以要强制转换一下
System.out.println(str);
}
}
三、List集合
1、List接口
List集合中的元素允许重复存放(类似于数组)、元素插入List的顺序就是元素在集合中的顺序,用户可以用索引来访问集合中的元素。
List中除了Collection接口功能,还有两个重要的特殊功能:
get(int index)//获得指定索引位置的元素
set(int index, Object obj)//将集合中指定index位置上的元素换成指定的obj
2、List接口实现类
(1)ArrayList
List<E> list = new ArrayList<>();
ArrayList实现了可变数组,可以保存所有元素(包括null)。适合查找,可以根据索引位置快速访问元素。不适合插入对象或删除对象。
(2)LinkedList
List<E> list = new LinkedList<>();
LinkedList采用链表结构保存对象。适合插入或删除对象,但是查询效率比较低。
(3)Vector
List<E> list = new Vector<>();
作为List接口的古老实现类;线程安全,效率低。
四、Set集合
1、HashSet
HashSet<E> hash = new HashSet<>();
HashSet实现了Set接口,由哈希表(实际上是一个HashMap实例)支持。不保证Set迭代顺序,允许使用null元素。
2、TreeSet
TreeSet<E> tree = new TreeSet<>();
TreeSet不仅实现了Set接口,还实现了java.util.SortedSet接口,因此,TreeSet实现的Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序,即可以通过比较器对TreeSet类实现Set集合中的对象进行排序。
下表为TreeSet比Collection新增的方法:
方法 | 功能描述 |
---|---|
first() | 返回set中的第一个元素 |
last() | 返回set中最后一个元素 |
comparator() | 返回此set中元素进行排序的比较器,如果是自然排序,则返回null |
headSet(E toElement) | 返回roElement(不包含)之前所有的对象组成的新set集合 |
tailSet(E fromElement) | 返回roElement(包含)之后所有的对象组成的新set集合 |
subSet(E fromElement, E toElement) | 返回由fromElement(包含)到toElement(不包含)之间的元素组成的新set集合 |
五、Map集合
1、Map接口
Map没有继承Collection接口,其提供的是key到value的映射。Map中相同的key只能映射一个value。
Map中常用的方法如下:
方法 | 功能描述 |
---|---|
put(K key, V value) | 向集合添加(key,value)映射关系 |
containsKey(Object key) | 返回一个boolean类型,如果集合中存在key则返回true,否则返回false |
containsValue(Object value) | 返回一个boolean类型,如果集合中存在value则返回true,否则返回false |
get(Object key) | 如果集合中存在key则返回key对应的value值,否则返回null |
KeySet() | 返回原集合中所有Key组成的新的集合 |
values() | 返回原集合中所有Value组成的新的集合 |