前言
复习到了JAVA中的集合了,为什么要用到集合呢,因为用数组作为存储的容器的话会有很多不方便,有了集合可以很好替代它,并且集合也打开了很多的技能点,我们便围绕这些来讲,而与数组的比较的话在本文下面会讲。
介绍
JAVA中的集合框架中,按照集合的接口分为大致两种:Colleciton和Map。实现类按类型分的话分为三种:List、Set、Map,实际它们都是接口。拿个百度的流程图看一下:
无论是Colleciton还是Map最终都是实现的Iterable接口(Map是间接实现的),该接口在lang包可找到,在Iterable接口中需要实现的方法不多,真正定义大部分的方法的是它的实现类类Colleciton和Map,它们是绝对的中坚力量。
在Collection(其实它中文意思就是集合)底下有List和Set(都是接口)实现,在List下有常见的实现类:ArrayList、LinkedList、Vector。Set下常见的实现类:HashSet、TreeSet、LinkedHashSet。
而Map(意思为映射)主要实现类有:HashMap、TreeMap、LinkedHashMap、Hashtable等。
我们后面的文章会对于其中一些实现类进行分析。
Iterator
这是一个集合所用的迭代器,实现了Iterable接口的类都是可以通过其Iterator()返回一个Iterator接口实现遍历的,其遍历的方式是通过一个游标从左往右移动,一开始游标是在0坐标位置的元素的左边的,最后移动到最后一个元素的右边,而next()则可以获得列表中下一个元素。
//实现Colleciton
List list = new ArrayList<>();
//遍历开始
Iterator iterator = list.iterator();
while(iterator.hasNext()){
Object next = iterator.next();//获取元素
}
ListIterator
刚刚的迭代器可以从左到右遍历,这个也可以,并且还可以从右往左遍历。
注意:想要从右往左遍历,需要让游标到右边。
List list = new ArrayList<>();
//遍历开始
ListIterator listIterator = list.listIterator();
while(listIterator.hasNext()){
Object next = listIterator.next();
}
while(listIterator.hasPrevious()){
Object previous = listIterator.previous();
}
集合与数组的比较
- 数组在使用的时候有一些麻烦,比如在声明的时候必须定义大小,由于数组是静态的所以无法直接的进行增删。类型是也必须先声明,里面的元素类型都是统一的。
- 而有了集合,在未使用泛型的情况下是可以放入不同类型的元素的,你要是是用了泛型则也是统一了元素的类型。而集合是动态的,它的大小随我们的添加而变化,也提供了很多内置的方法供我们对元素进行操作。
总结
今天是对于集合的基本介绍,由于都是接口也没什么好讲的,接下来就是分析具体的实现类了。