Java集合

Java的集合类

大体上可分为Set、List、Map
Set代表无序,不可重复的集合
List代表有序,重复的集合

Map代表具有映射关系的集合



1.Collection和Iterator接口

boolean add(Object o) 向集合里添加一个元素
boolean addAll(Collection c) 把集合内所有元素添加到指定集合

void clear() 清空
boolean isEmpty() 返回集合是否为空
boolean remove(Object o) 删除指定元素o
boolean removeAll(Collection c) 删除集合c中所有元素
boolean retainAll(Conllection c) 删除集合c里不包含的元素

boolean contains(Object o) 集合里是否包含指定元素
boolean containsAll(Collecion c) 集合里是否包含c里所有元素

Iterator iterator() 返回iterator对象
int size() 返回集合里元素的个数

Object[] toArray() 把集合转换成一个数组

注意该接口并没有定义如何获取元素

遍历集合元素
1)Iterator接口
boolean hasNext() 遍历是否结束
Object next() 返回下一个元素
void remove() 删除上一次next方法返回的元素
2)使用foreach循环遍历元素
for (Object obj : Collection)

2.Set接口


Set接口在Collection接口上增加了不允许重复的要求

1)HashSet采用HashCode值决定对象在HashSet中存储位置,判断相等的标准为equals()和hashCode()
LinkedHashSet通过链表维护元素插入顺序
2)SortedSet接口只有一个实现类TreeSet
TreeSet采用红黑树确保元素处于排序状态
Comparator comparator() 返回Set使用的Comparator

Object first() 返回第一个元素
Object last() 返回最后一个元素

Object lower(Object e) 返回e之前的元素(e不需要存在于TreeSet)
SortedSet headSet(element) 返回element之前的所有元素

Object higher(Object e) 返回e之后的元素
SortedSet tailSet(element) 返回element之后所有的元素

SortedSet subSet(fromElement, toElement) 返回Set子集合

自然排序:
Comparable接口有obj1.compareTo(Object obj2)方法
obj1 == obj2 return 0
obj1 < obj2 return -1(Integer)
obj1 > obj2 return 1(Integer)
定值排序:
在创建TreeSet集合对象时提供一个Comparable对象,并实现compare方法

EnumSet类

3.List接口


void add(index, element) 将元素插入到指定位置
boolean addAll(index, collection) 将c所有元素插入list

Object get(index) 返回指定值
List subList(int fromIndex, int toIndex) 返回子集
int indexOf(Object o) 返回o在List集合的位置
int lastIndexOf(Object o) 返回o在List最后一次出现的位置

Object remove(int index) 删除并返回index索引处的元素
Object set(int index, Object element) 将index索引处的元素替换为element对象

ListIterator listIterator()
增加了以下方法:
boolean hasPrevious() 是否还有上一个元素
Object previous() 返回上一个元素
void add() 在指定位置插入一个元素

1)ArrayList和Vector
都是基于数组的List类,扩容时通过Arrays.copyOf返回一个新对象
通过以下两个方法操作capacity属性
void ensureCapacity(int minCapacity) 将capacity增加为原来的1.5倍,若newCapacity < minCapacity 则增加至minCapacity
void trimToSize() 调整capacity为列表当前大小
ArrayList为线程不安全的,vector为线程安全的。但不建议使用vector
2)Stack
Object peek() 返回栈第一个元素
Object pop() 返回第一个元素并将其出栈
void push(Object item) 将元素入栈

Arrays.ArrayList是一个固定长度的List集合,不可增加、删除,但可以修改其中的元素

4.Queue接口


Queue接口的方法分为抛出异常和不抛出异常两种:

Duque为双端队列,可以实现队列和栈的功能




1)LinkedList实现类
实现了List接口和Deque接口,内部采用链表实现
2)PriorityQueue实现类
优先队列

5.Map接口


Key值对应一个Set,Value值对应一个List
void clear() 删除所有key-value对
boolean isEmpty() 查询Map是否为空
Object remove(Object key) 删除指定的Key-Value对并返回Value

boolean containsKey(Object key) 查询是否包含指定的Key
boolean containsValue(Object value) 查询是否包含指定的value
Object get(Object key)返回指定Key对应的Value

Set entrySet() 返回所有Key-Value对组成的Set集合,每个元素都是Map.Entry对象
Set keySet() 返回该Map中所有Key组成的Value
Collection values() 返回Map中所有value组成的Collection

Object put(Object key, Object value) 添加key-value对
void putAll(Map m) 将指定Map中的Key-Value对复制

int size() 返回key-value对的个数

Map中包括一个内部类Entry
Object getKey() 返回Entry的Key值
Object getValue() 返回Entry的Value值
Object setValue(V value) 设置Value值并返回

1)HashMap和HashTable
通过遍历Key对应Set的元素,可遍历整个Map
LinkedHashMap使用双向链表维护Key-Value对的次序
2)SortedMap接口和TreeMap实现类
TreeMap基于红黑树自然排序
Map.Entry firstEntry()
Object firstKey()
Map.Entry lastEntry()
Object lastKey()
Map.Entry higherEntry(Object key)
Object higherKey(Object key)
Map.Entry lowerEntry(Object key)
Object lowerKey(Object key)
SortedMap subMap(Object fromKey, Object toKey)
SortedMap tailMap(Object fromKey)
SortedMap heapMap(Object toKey)
3)WeakHashMap实现类
与HashMap不同之处在于该类保存Key的若引用,因此有可能被垃圾回收机制回收
4)IdentityHashMap实现类
key1 == key2 则两个key相等

6.集合工具类


对于List集合:
reverse(List list) 反转顺序
shuffle(List list) 随机排序
sort(List list) 排序
sort(List list, Comparator c) 定制排序
swap(List list, int i, int j) 将i和j交换
rotate(List list, int distance) 整体移位,负数为左移整数为右移

unmodifiableXxx 返回指定集合的不可变视图



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值