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 视图(集合)。

posted @ 2020-07-12 23:53  安月冷  阅读(113)  评论(0编辑  收藏  举报