Java集合类
2020-02-23 23:03 默默不语 阅读(239) 评论(0) 编辑 收藏 举报如今经常用到Java中的各种集合类,所以特地在网上学习了一下Java的几种集合类,总结在这篇博客中。
首先。集合是Java SE API所提供的一系列类(java.util包内)的实例,可以用于动态存放多个对象,便于我们操作。
1.Collection接口
Collection接口声明了一组管理它所存储元素的方法。其中常用子接口有:
Set接口:存放的元素不包含重复的集合接口(元素无序且不重复).
List接口:存放的元素有序且允许有重复的集合接口。
Collection接口中定义的方法有:
int size(): 返回此collection中的元素数。
boolean isEmpty():判断此collection中是否包含元素。
boolean contains(Object obj):判断此collection是否包含指定的元素。
boolean contains(Collection<?> c): 判断此collection是否包含指定collection中的所有元素。
boolean add(E element):向此collection中添加元素。
boolean addAll(Collection<? extends E> c):将指定collection中的所有元素添加到此collection中。
boolean remove(Object element):从此collection中移除指定的元素。
boolean removeAll(Collection<?> c):移除此collection中那些也包含在指定collection中的所有元素。
void clear():移除些collection中所有的元素。
boolean retainAll(Collection<?> c):仅保留此collection中那些也包含在指定collection的元素。
Iterator iterator():返回在此collection的元素上迚行迭代的迭代器。
T[] toArray(T[] arr):把此collection转成数组。
Set接口
Set接口没有提供Collection接口额外的方法,但实现Set接口的集合类中的元素是不可重复的(重复:两个对象equals()相等)。常用的有:HashSet和 LinkedHashSet。
HashSet不保存元素的存入顺序, LinkedHashSet根据元素的哈希码进行存放,同时用链表记录元素的加入顺序。Set集合存、取、删对象都有很高的效率。但对于要存放到Set集合中的对象,对应的类一定要重写equals()和 hashCode(Object obj)方法以实现对象相等规则。
List接口
List接口的集合类中的元素是有序的,且允许重复。List集合中的元素都对应一个整数型的序号记载其在集合中的位置,访问时可以根据序号存取集合中的元素。常用的有:ArrayList和LinkedList。
ArrayList是使用数组结构实现的List集合,对于使用索引取出元素有较好的效率,但元删除或插入元素速度较慢。
LinkedList是使用双向链表实现的集合,对频繁的插入或删除元素有较高的效率。
List接口比Collection接口新增了几个实用方法:
public Object get(int index) :返回列表中的元素数。
public Object add(int index, Object element):在列表的指定位置插入指定元素,将当前处于该位置的元素和所有后续元素向右移动。
public Object set(int index, Object element):用指定元素替换列表中指定位置的元素。
public Object remove(int index) :移除列表中指定位置的元素。
public ListIterator listIterator():返回此列表元素的列表迭代器。
2.Map接口
Map实现类中存储的“键-值”映射对是通过键来唯一标识,Map底层 的“键”是用Set来存放的,所以,存入Map中的映射对的“键”对应的类必须重写hashcode()和equals()方法。 常用String作为Map的“键”。常用的有:HashMap和LinkedHashMap。
HashMap内部使用哈希表对 “键-值”映射对 迚行散列存放,是使用频率最高的一个集合。
LinkedHashMap是HashMap的子类,它使用哈希表存放映射对 ,用链表记录映射对的插入顺序。
Map接口中定义的一些常用的方法:
Object put(Object key, Object value):将指定的“键-值”对存入Map中。
Object get(Object key):返回指定键所映射的值。
Object remove(Object key):根据指定的键把此“键-值”对从Map中移除。
boolean containsKey(Object key):判断此Map是否包含指定键的“键-值”对。
boolean containsValue(Object value):判断是否包含指定值的“键-值”对。
boolean isEmpty():判断此Map中是否有元素。
int size():获得些Map中“键-值”对的数量。
void clear():清空Map中的所有“键-值”对。
Set keySet():返回此Map中包含的键的Set集。
Collection values():返回此Map中包含的值的Collection集。
Set<Map.Entry<K,V>> entrySet():返回此Map中包含的“键-值”对的Set集。