我们为啥要学集合呢?
集合顾名思义就是存放了一组数据的集合嘛!
java集合也是如此,我们之前是通过数组的方式存取一组数据!
数组的缺点:
- 一个数组只能保存同一类型的数据
- 固定的初始化容量,容量不够需要进行扩列
- 增删操作效率低,并且需要自己实现并且移动数组中的元素
集合优点:
- 一个集合可以保存多种类型的数据
- 可以动态添加删除元素
- 内置了很多高效的方法供我们进行增删改查
集合框架下最主要的接口就是List
,Set
,Map
我们把这3个接口及其常用子类学习就学会了集合框架的使用!
难点就是自己分析这些类的方法源码,进而加深对集合框架的理解!
集合体系图
主要学习上述列列举到的接口和类就差不多了!
List
和Set
接口都是实现了Collection
接口而Collection
接口又实现了Iterable
接口
而Map
接口自成一派!
为啥这样呢?
List
和Set
存取的是单个元素(单列集合)
Map
保存的是键值对!(双列集合)
我们看到
Collection
接口实现了Iterable
接口!
所以Colleciton
接口实现了Iterable
下的所有方法!
而List
和Set
接口又实习了Collection
所有方法
iterator()
方法
返回一个Iterator
迭代器
可以通过这个迭代器对集合进行遍历
这个迭代器下有3个方法!
hasNext()
next()
remove()
叠带器迭代的方式类似于指针遍历,通过hashNext()
判断指针是否走到集合末尾,next()
返回迭代器中的下一个元素!
一般用于集合遍历
public class Collection_ {
public static void main(String[] args) {
Collection collection = new ArrayList();
//增加
collection.add(1);
collection.add("1234");
//删除1
collection.remove(1);
//获取长度
System.out.println(collection.size());
//获取到迭代器进行遍历
Iterator iterator = collection.iterator();
while (iterator.hasNext()){
Object next = iterator.next();
System.out.print(" next:"+next);
}
}
}
这里的
List
和Set
集合有3种遍历方式!
由于我们的Collection
接口没有get()
方法就无法进行普通for循环遍历!
public class Collection_ {
public static void main(String[] args) {
Collection collection = new ArrayList();
for (int i = 0; i < 10; i++) {
collection.add(i);
}
//获取到迭代器进行遍历
System.out.println("迭代器遍历");
Iterator iterator = collection.iterator();
while (iterator.hasNext()){
Object next = iterator.next();
System.out.print(" "+next);
}
System.out.println("\n增强for遍历");
for (Object object :collection) {
System.out.print(object+" ");
}
}
}