集合框架知识系列02 集合顶层接口

蒋玉菡
• 阅读 1738

首先,下面是Collection、Map和、Set接口的相关架构图

  1. Collection接口

集合框架知识系列02  集合顶层接口

  1. Map接口

集合框架知识系列02  集合顶层接口
图片来源:http://www.cnblogs.com/skywan...

一、Collection相关接口和类

和Collection相关的接口主要有Collection、List和Set接口,其他接口会在介绍三个接口中穿插讲解。

1、Collection接口

  • Collection是一个抽象出来的接口,定义如下:
public interface Collection<E> extends Iterable<E> {}

其中包括了集合的基本操作,包括:删除、添加、遍历、大小等。
Collection中定义方法如下:

int size();
boolean isEmpty();
boolean contains(Object o);
Iterator<E> iterator();
Object[] toArray();
<T> T[] toArray(T[] a);
boolean add(E e);
boolean remove(Object o);
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c);
boolean removeAll(Collection<?> c);
boolean retainAll(Collection<?> c);
void clear();
boolean equals(Object o);
int hashCode();
//1.8新增
default boolean removeIf(Predicate<? super E> filter){}
default Spliterator<E> spliterator(){}
default Stream<E> stream(){}
default Stream<E> parallelStream() {}
  • AbstractCollection抽象类继承自Collection,实现了除iterator()和size()的所有方法。定义如下:
public abstract class AbstractCollection<E> implements Collection<E> {}

2、List接口

  • List接口继承自Collection,List中的元素的允许重复的。定义如下:
public interface List<E> extends Collection<E> {}

和Collection不重合、List特有的方法如下:

boolean addAll(int index, Collection<? extends E> c);
default void replaceAll(UnaryOperator<E> operator) {}
default void sort(Comparator<? super E> c) {}
E get(int index);
E set(int index, E element);
void add(int index, E element);
E remove(int index);
int indexOf(Object o);
int lastIndexOf(Object o);
ListIterator<E> listIterator();
ListIterator<E> listIterator(int index);
List<E> subList(int fromIndex, int toIndex);
  • AbstractList抽象类继承了AbstractCollection,并且实现了List接口,定义如下:
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {}

3、Set接口

  • Set接口继承自Collection,Set是数学中定义的集合,元素不允许重复。定义如下:
public interface Set<E> extends Collection<E> {}

Set接口和Collection中方法一致,具体见Collection接口方法。

  • AbstractSet抽象类继承了AbstractCollection,并且实现了Set接口,定义如下:
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> {}

二、Map相关接口和类

Map是一种键值对的映射,没有继承Collection接口,具体定义如下:

public interface Map<K,V> {}

1、Map接口

Map接口中定义了添加、删除、遍历等相关方法,具体方法如下:

int size();
boolean isEmpty();
boolean containsKey(Object key);
boolean containsValue(Object value);
V get(Object key);
V put(K key, V value);
V remove(Object key);
void putAll(Map<? extends K, ? extends V> m);
void clear();
Set<K> keySet();
Collection<V> values();
Set<Map.Entry<K, V>> entrySet();
interface Entry<K,V> {}
boolean equals(Object o);
int hashCode();
//1.8新增
default V getOrDefault(Object key, V defaultValue) {}
default void forEach(BiConsumer<? super K, ? super V> action) {}
default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) {}
default V putIfAbsent(K key, V value) {}
default boolean remove(Object key, Object value) {}
default boolean replace(K key, V oldValue, V newValue) {}
default V replace(K key, V value) {}
default V computeIfAbsent(K key,
Function<? super K, ? extends V> mappingFunction) {}
default V computeIfPresent(K key,
BiFunction<? super K, ? super V, ? extends V> remappingFunction) {}
default V compute(K key,
BiFunction<? super K, ? super V, ? extends V> remappingFunction) {}
default V merge(K key, V value,
BiFunction<? super V, ? super V, ? extends V> remappingFunction){}

2、AbstractMap类

AbstractMap抽象类实现了Map接口,实现Map中定义的方法,定义如下:

public abstract class AbstractMap<K,V> implements Map<K,V> {}

3、SortedMap和NavigableMap接口

SortedMap表示一个有序的键值映射,排序的方式有两种:自然排序和指定比较强排序。插入有序的SortedMap的所有元素都必须实现Comparable接口,具体方法如下:

Comparator<? super K> comparator();
SortedMap<K,V> subMap(K fromKey, K toKey);
SortedMap<K,V> headMap(K toKey);
SortedMap<K,V> tailMap(K fromKey);
K firstKey();
K lastKey();
Set<K> keySet();
Collection<V> values();
Set<Map.Entry<K, V>> entrySet();

NavigableMap是SortedMap接口的扩展,有针对给定搜索目标返回最接近匹配项的导航方法。具体方法如下:

Map.Entry<K,V> lowerEntry(K key);
K lowerKey(K key);
Map.Entry<K,V> floorEntry(K key);
K floorKey(K key);
Map.Entry<K,V> ceilingEntry(K key);
K ceilingKey(K key);
Map.Entry<K,V> higherEntry(K key);
K higherKey(K key);
Map.Entry<K,V> firstEntry();
Map.Entry<K,V> lastEntry();
Map.Entry<K,V> pollFirstEntry();
Map.Entry<K,V> pollLastEntry();
NavigableMap<K,V> descendingMap();
NavigableSet<K> navigableKeySet();
NavigableSet<K> descendingKeySet();
NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive,
K toKey,   boolean toInclusive);
NavigableMap<K,V> headMap(K toKey, boolean inclusive);
NavigableMap<K,V> tailMap(K fromKey, boolean inclusive);
SortedMap<K,V> subMap(K fromKey, K toKey);
SortedMap<K,V> headMap(K toKey);
SortedMap<K,V> tailMap(K fromKey);

Iterator相关接口

Iterator的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而又不必暴露该对象内部细节的方法。通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。

1、Iterator接口

Iterator接口的定义如下:

public interface Iterator<E> {}

Iterator中定义的方法如下:

boolean hasNext();
E next();
//1.8新增
default void remove() {}
default void forEachRemaining(Consumer<? super E> action) {}

2、ListIterator接口

支持在迭代期间向List中添加或删除元素,并且可以在List中双向滚动。定义如下:

public interface ListIterator<E> extends Iterator<E> {}

ListIterator中定义的方法如下:

boolean hasNext();
E next();
boolean hasPrevious();
E previous();
int nextIndex();
int previousIndex();
void remove();
void set(E e);
void add(E e);

本节主要总结了集合相关的顶层接口,下一节将分析每一类集合实现类。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java基础(7)集合与泛型
第一部分:Collection集合1collection集合概述集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map。Collection是所有单列集合的父接口,因此在Collection中定义了
Wesley13 Wesley13
3年前
java集合基础复习
温故知新,好一段学习时间过后到了收割的季节。java中集合java.util包下的一个集合根接口collection,其子接口list和set,map接口定义keyvalue键值对。ArrayList、linkedlist、vector实现了list接口。也称线性集合。数据有序可重复。ArrayList:底层实现的数组,线程不安全的,效率
Wesley13 Wesley13
3年前
java基础(五)集合
!(https://images2015.cnblogs.com/blog/875181/201609/875181201609211007331061187286566.png)Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两个接口,就是Set和List。Set中不能包含重复的元素。L
执键写春秋 执键写春秋
4年前
Java集合之综合论述
1.Java集合1.1集合应用场景1.无法预测存储数据的数量的情况下,2.同时存储一对一关系的数据3.需要进行数据的增删4.数据重复问题1.2集合框架的体系结构集合框架分为两类,一是Collection,用于存储类的对象。二是Map,以键值对的形式存储信息。Collection主要有三个子接口,List(序列),Queue(队列
Stella981 Stella981
3年前
List,set,Map 的用法和区别
Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection接口  Collection是最基本的集合接口,一个Collection代表一组
Wesley13 Wesley13
3年前
Java最常见的面试题:模块二
容器18\.java容器都有哪些?常用容器的图录:19\.Collection和Collections有什么区别?java.util.Collection是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java类库
Stella981 Stella981
3年前
Collection、Map总结
Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection接口  Collection是最基本的集合接口,一个Collection代表一组
Wesley13 Wesley13
3年前
Java核心(四)你不知道的数据集合
!数据容器关系图(http://icdn.apigo.cn/blog/collection002.png)导读:Map竟然不属于Java集合框架的子集?队列也和List一样属于集合的三大子集之一?更有队列的正确使用姿势,一起来看吧!Java中的集合通常指的是Collection下的三个集合框架List、Set、Queue和Map集合,Map并不
Wesley13 Wesley13
3年前
Java集合从菜鸟到大牛演变
先来看一张集合概况图,这里从上到下列举了几个最经常用的集合!(http://img.javastack.cn/1587459547246301.png)1、集合接口java.util.Collection是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java类库中有很多具体的实现。Coll
Wesley13 Wesley13
3年前
Java集合及concurrent并发包总结(转)
<divid"cnblogs\_post\_body"class"blogpostbody"<p<strong1.集合包</strong</p<p&nbsp;&nbsp;集合包最常用的有Collection和Map两个接口的实现类,Colleciton用于存放多个单对象,Map用于存放KeyValue形式的键值对。</p<p
Wesley13 Wesley13
3年前
Java_Learn
20180417集合类Collection如果是实现了list接口的集合类,具备的特点是有序,可重复;如果是实现了set接口的集合类,具备的特点是无序,不可重复;Collection中的方法 增加 删除查看  add("添加任意类型的元素到集合中"); addall("添加一个集合的元素到另外一个集合中") clear("
蒋玉菡
蒋玉菡
Lv1
回鞭指长安,西日落秦关。
文章
3
粉丝
0
获赞
0