摘要:通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。定义如下中定义的方法如下本节主要总结了集合相关的顶层接口,下一节将分析每一类集合实现类。
首先,下面是Collection、Map和、Set接口的相关架构图
Collection接口
Map接口
图片来源:http://www.cnblogs.com/skywan...
和Collection相关的接口主要有Collection、List和Set接口,其他接口会在介绍三个接口中穿插讲解。
1、Collection接口Collection是一个抽象出来的接口,定义如下:
public interface Collectionextends Iterable {}
其中包括了集合的基本操作,包括:删除、添加、遍历、大小等。
Collection中定义方法如下:
int size(); boolean isEmpty(); boolean contains(Object o); Iteratoriterator(); Object[] toArray(); 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 spliterator(){} default Stream stream(){} default Stream parallelStream() {}
AbstractCollection抽象类继承自Collection,实现了除iterator()和size()的所有方法。定义如下:
public abstract class AbstractCollection2、List接口implements Collection {}
List接口继承自Collection,List中的元素的允许重复的。定义如下:
public interface Listextends Collection {}
和Collection不重合、List特有的方法如下:
boolean addAll(int index, Collection extends E> c); default void replaceAll(UnaryOperatoroperator) {} 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 listIterator(); ListIterator listIterator(int index); List subList(int fromIndex, int toIndex);
AbstractList抽象类继承了AbstractCollection,并且实现了List接口,定义如下:
public abstract class AbstractList3、Set接口extends AbstractCollection implements List {}
Set接口继承自Collection,Set是数学中定义的集合,元素不允许重复。定义如下:
public interface Setextends Collection {}
Set接口和Collection中方法一致,具体见Collection接口方法。
AbstractSet抽象类继承了AbstractCollection,并且实现了Set接口,定义如下:
public abstract class AbstractSet二、Map相关接口和类extends AbstractCollection implements Set {}
Map是一种键值对的映射,没有继承Collection接口,具体定义如下:
public interface Map1、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(); Set2、AbstractMap类keySet(); Collection values(); Set > entrySet(); interface Entry {} 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){}
AbstractMap抽象类实现了Map接口,实现Map中定义的方法,定义如下:
public abstract class AbstractMap3、SortedMap和NavigableMap接口implements Map {}
SortedMap表示一个有序的键值映射,排序的方式有两种:自然排序和指定比较强排序。插入有序的SortedMap的所有元素都必须实现Comparable接口,具体方法如下:
Comparator super K> comparator(); SortedMapIterator相关接口subMap(K fromKey, K toKey); SortedMap headMap(K toKey); SortedMap tailMap(K fromKey); K firstKey(); K lastKey(); Set keySet(); Collection values(); Set > entrySet(); NavigableMap是SortedMap接口的扩展,有针对给定搜索目标返回最接近匹配项的导航方法。具体方法如下: Map.Entry lowerEntry(K key); K lowerKey(K key); Map.Entry floorEntry(K key); K floorKey(K key); Map.Entry ceilingEntry(K key); K ceilingKey(K key); Map.Entry higherEntry(K key); K higherKey(K key); Map.Entry firstEntry(); Map.Entry lastEntry(); Map.Entry pollFirstEntry(); Map.Entry pollLastEntry(); NavigableMap descendingMap(); NavigableSet navigableKeySet(); NavigableSet descendingKeySet(); NavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive); NavigableMap headMap(K toKey, boolean inclusive); NavigableMap tailMap(K fromKey, boolean inclusive); SortedMap subMap(K fromKey, K toKey); SortedMap headMap(K toKey); SortedMap tailMap(K fromKey);
Iterator的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而又不必暴露该对象内部细节的方法。通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。
1、Iterator接口Iterator接口的定义如下:
public interface Iterator{}
Iterator中定义的方法如下:
boolean hasNext(); E next(); //1.8新增 default void remove() {} default void forEachRemaining(Consumer super E> action) {}2、ListIterator接口
支持在迭代期间向List中添加或删除元素,并且可以在List中双向滚动。定义如下:
public interface ListIteratorextends Iterator {}
ListIterator中定义的方法如下:
boolean hasNext(); E next(); boolean hasPrevious(); E previous(); int nextIndex(); int previousIndex(); void remove(); void set(E e); void add(E e);
本节主要总结了集合相关的顶层接口,下一节将分析每一类集合实现类。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71986.html
摘要:集合工具包是在包中,实现了数据结构数组栈链表队列映射和集合。集合主要可以划分为个部分列表集合映射工具类迭代器枚举类和。集合的框架图如下图片来源集合顶层接口主要有和。和都是集合遍历相关接口,是特有的遍历工具接口 Java集合工具包是在java.util.*包中,实现了数据结构:数组、栈、链表、队列、映射和集合。Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具...
摘要:再者,现在互联网的面试中上点的都会涉及一下或者的问题个高级多线程面试题及回答后端掘金在任何面试当中多线程和并发方面的问题都是必不可少的一部分。假如源码分析之掘金概念是中集合的一种实现。 攻破 JAVA NIO 技术壁垒 - 后端 - 掘金现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty。学习和掌握NIO技术已经不是一个JAVA攻城狮...
摘要:第三阶段常见对象的学习集合框架集合在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息。面试题和的区别是单列集合的顶层接口,有子接口和。 第三阶段 JAVA常见对象的学习 集合框架——Map集合 showImg(https://segmentfault.com/img/remote/1460000019683...
摘要:第三阶段常见对象的学习集合框架概述和集合的遍历一集合框架的概述集合的由来如果一个程序只包含固定数量的且其生命周期都是已知的对象,那么这是一个非常简单的程序。进而它们的遍历方式也应该是不同的,最终就没有定义迭代器类。 第三阶段 JAVA常见对象的学习 集合框架概述和集合的遍历 (一) 集合框架的概述 (1) 集合的由来 如果一个程序只包含固定数量的且其生命周期都是已知的对象,那么这是一...
摘要:每次迭代器进结构性修改的时候都将和进行对比如果两种相等则说明没有其他迭代器修改了对象,可以进行。 一、ArrayList简介 ArrayList的内部实现了动态数组,提供了动态的增加和减少元素,继承AbstractList类,并且实现了List、RandomAccess、Cloneable和java.io.Serializable接口。ArrayList是一个数组队列,提供添加、删除、...
阅读 1359·2021-10-14 09:43
阅读 4110·2021-09-27 13:57
阅读 4508·2021-09-22 15:54
阅读 2521·2021-09-22 10:54
阅读 2254·2021-09-22 10:02
阅读 2064·2021-08-27 13:11
阅读 831·2019-08-29 18:44
阅读 1615·2019-08-29 15:20