Java集合
Collection 接口有 3 种子类型集合: List Set Queue 再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、ArrayBlockingQueue等.
方法名 | 说明 |
---|---|
boolean add(E e) | 向集合添加元素e,若指定集合元素改变了则返回true |
boolean addAll(Collection<? extends E> c) | 把集合C中的元素全部添加到集合中,若指定集合元素改变返回true |
void clear() | 清空所有集合元素 |
boolean contains(Object o) | 判断指定集合是否包含对象o |
boolean containsAll(Collection<?> c) | 判断指定集合是否包含集合c的所有元素 |
boolean isEmpty() | 判断指定集合的元素size是否为0 |
boolean remove(Object o) | 删除集合中的元素对象o,若集合有多个o元素,则只会删除第一个元素 |
boolean removeAll(Collection<?> c) | 删除指定集合包含集合c的元素 |
boolean retainAll(Collection<?> c) | 从指定集合中保留包含集合c的元素,其他元素则删除 |
int size() | 集合的元素个数 |
T[] toArray(T[] a) | 将集合转换为T类型的数组 |
List接口
a.有下标
b.有序的(有序不是自然顺序,不是123,abc,有序指的是存和取的顺序一致)
c.可重复
实现类:ArrayList,LinkedList,Vector
ArrayList:底层采用可扩容(50%)数组结构,查询快,增删慢,线程不安全
LinkedList:底层采用链表结构,查询慢,增删快
Vector:底层采用扩容(100%)数组结构,查询快,增删慢,线程安全
List结构中具有的方法:
增: add(E e);add(int index,E e);
删: remove(Object obj);remove(int index);
改: set(int index,E e);
查: get(int index);
其他:
size(),clear(),contains(Object obj),toArray()
iterator();isEmpty()
Set接口
a.无下标
b.无序的(无序指的是存和取的顺序不一定一致,LinkedHashSet和TreeSet除外)
c.不可重复
实现类:HashSet,LinkedHashSet,TreeSet(红黑树的有序结构)
HashSet:底层采用哈希表结构,查询快,增删快,无序的,线程不安全
ps:HashTable是线程安全的。
LinkedHashSet:底层采用 链表+哈希表,查询快,增删快;对元素的访问和添加元素来说是有序的
ps:保证了加入和访问元素的顺序,类似于LRU缓存。
TreeSet:底层采用红黑树,保证了元素的有序性。
ps:使用了Set的子接口SortedSet/NavigableSet。TreeSet进行了实现。
Set接口中的特有方法: 没有,和父接口Collection基本一模一样
实现类:
HashSet和LinkedHashSet中的方法基本和Set接口一模一样
Map集合和Collection集合的区别
Map集合是有Key和Value的,Collection集合是只有Value。
Collection集合底层也是有Key和Value,只是隐藏起来。
1.添加
V put(K key, V value):将指定的值与此映射中的指定键关联,添加键值对。
void putAll(Map<? extends K,? extends V> m):从指定映射中将所有映射关系复制到此映射中,批量添加键值对。
2.删除
void clear():从此映射中移除所有映射关系,清空所有键值对。
V remove(Object key):如果存在一个键的映射关系,则将其从此映射中移除,删除单个键值对。
3.判断
boolean containsKey(Object key):如果此映射包含指定键的映射关系(是否包含该键),则返回 true。
boolean containsValue(Object value):如果此映射将一个或多个键映射到指定值(是否包含该值),则返回 true。
boolean isEmpty():如果此映射未包含键-值映射关系,该map集合为空,则返回 true。
4.获取
V get(Object key):返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
int size():返回此映射中的键-值映射关系(键值对)数。
Collection<V> values():返回此映射中包含的值的 Collection 视图(集合)。
重点取出方式:
Set<K> keySet():返回此映射中包含的键的 Set 视图(集合)。
Set<Map.Entry<K,V>> entrySet():返回此映射中包含的映射关系的 Set 视图(集合)。