导图社区 Java集合导图
计算机专业同学福利!总结了6年的JavaScript 高级程序设计思维导图,非常全面非常细致。需要拿去!Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。本思维导图对Java繁复的集合框架进行了梳理,并且标注了其中的要点,希望对你有帮助!
社区模板帮助中心,点此进入>>
英语词性
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
法理
刑法总则
【华政插班生】文学常识-先秦
【华政插班生】文学常识-秦汉
文学常识:魏晋南北朝
【华政插班生】文学常识-隋唐五代
【华政插班生】文学常识-两宋
Java集合框架
接口
Collection接口
子接口
List接口
方法
增:void add(int index, T element); void add(int index, Collection coll);
删:Object remove(index);
改:Object set(index, element);
查:Object get(index); int indexOf(object); int lastIndexOf(object); List subList(from,to);
重要的接口AbstractList及其子类都对List接口进行了单独的实现
Set接口
SortedSet接口
NavigableSet接口
要点
两大特点:不可重复、无序性
大体上和其父接口Collection没什么区别
Queue接口
Deque接口
增
boolean add(E e);
boolean addAll(Collection<? extends E> c);
删
boolean remove(object obj);
boolean removeAll(Collection coll);
void clear()
查
int size()
Interator<E> iterator()
boolean contains(object obj)
boolean containsAll(Collection coll)
boolean isEmpty()
其他
boolean retainAll(Collection<E> coll);取交集
Object[] toArray();返回包含此 collection 中所有元素的数组。
Map接口
SortedMap接口
NavigableMap接口
特点
Iterator接口
E next();
异常:NoSuchElementException
如果没有下一个而使用此方法则会抛出该异常,因此使用前要调用hasNext()方法检查
boolean hasNext();
void remove();
此方法如果删除两个相邻元素不能直接使用remove,必须在两次之间加入next方法,以便使迭代器移动到下一个位置
default void forEachRemaining(Consumer<? super E>) action;
有了这个方法可以不使用foreach遍历,只需要调用该方法并提供一个lambda表达式即可: iterator.forEachRemaining(element->do something with element);
所有实现了Iterator接口的类都可以使用foreach来进行遍历
ListIterator接口
void add(E element)
get(int i)
set(E element)
需要注意的是,如果迭代器发现他的集合被另一个迭代器修改了,或是被该集合自身的方法修改了,就会抛出异常。因此,为了避免发生异常,应遵循如下规则: 1.可以附加许多只读迭代器 2.单独附加一个可读写的迭代器
反向遍历的方法
E previous()
boolean hasPrevious()
RandomAccess接口
不包含任何具体的方法,不过他可以用来测试一个特定的结合是否支持高效的随机访问
类
AbstractCollection类
子类
AbstractList
LinkedList
增删查改:就是List接口的方法
要实现链表中间添加,需要使用特有迭代器ListIterator中的add方法
子主题
链表实现,增删较快
ArrayList
数组实现,查询较快
Vector
数组实现,与ArrayList功能相同
同步,即线程安全,因而运行缓慢。 大部分情况下都不使用
AbstractSet
HashSet
LinkedHashSet
只有不关心集合顺序时才使用HashSet
继承了Set接口该有的方法
TreeSet
TreeSet类实现了NavigableSet接口,增加了几个便于定位元素和反向遍历的方法
实现方式是红黑树
可以实现排序
如果要实现自定义类的排序,有两种途径
其一,自定义类要实现Comparable接口
其二,构造集时放一个实现了Compactor类的对象
同样没有什么特殊的方法
EnumSet
ArrayQueue
AbstractQueue
PriorityQueue
该类及其子类都有Iterator,因此都可以直接foreach或调用 default void forEachRemaining(Consumer<? super E> action)方法
AbstractMap类
IdentityHashMap
WeakMap
EnumMap
TreeMap
HashMap
LinkedHashMap