最近又回头看了下Java集合方面的知识,可以说,Java集合的精华全部在于接口上面,搞懂接口再看具体的集合就会轻松很多,下面总结了一些常用的接口和接口之间的继承关系。
常用接口:Iterator, Collection, Set, Map, List, Queue, Deque
- Iterator
Iterator迭代器接口可以说是整个集合接口的基础,他提供了对元素遍历的功能,用来替换最初的遍历接口Enumeration,两者相比,Iterator有两方面的优势:1,它可以让集合在遍历元素的时候删除元素。2,方法名和类名更加简洁。
Iterator有三个基本的方法,hasNext(), next(), remove()。 - Collection extends Iterable
先解释一下Iterable接口,它属于Java.lang包,属于基本语言语法中的接口,这个接口很简单,他有两个基本的方法,一个是iterator,没错,它返回一个Iterator的接口类型,拥有遍历的功能。第二个方法很神奇,forEach(Consumer<? super T>> action),相信很多人都用过Java的for each方法遍历集合中的所有元素,根源就在这里,因为Collection继承Iterable,所以凡是实现Collection接口的集合,都可以使用for each。
Collection接口是整个集合继承关系的根,所有的其他集合接口都是由Collection派生出来的,所以,Collection提供的方法是整个集合部分最基本的方法。Collection有下面几个特点:
- 每一个继承Collection接口的累都需提供两个构造函数,一个是无参数类型构造函数,另一个则带有一个泛型参数。
- 有的集合类可能不允许集合改变,会抛出UnsupportedOperationException。
- 有些实现类对其所包含的元素有限制,比如有的支持null有的不支持null,非法的元素操作会抛出异常。
- 每个实现类应该定义自己的同步机制,以防多线程造成的数据问题。
- 实现可以自己定义equal方法,例如contain方法调用的就是equal来比较对象
- 集合最好不要包含自己本身,不然容易出错。
collection提供基本的集合方法,例如size(), isEmpty(), contains(), equal(), clear()等。但是,如果想自定义一个新的几个类,最好继承AbstractCollection()。