Collection集合
以前被告诉说,导图要画的简练,越少越好,找出的联系越多越好,可是仔细回想一下,对以前画的图是一点印象都没有,都是为了达到要求而画图,不是为了让自己的思路清晰而画图,今天画思维导图的时候突然想到,我画图到底是为了什么,是为了让别人看还是让自己学会,画出的图很简练,看起来总结的是很好,可是别人看到了真的只是是什么吗,自己看到以后真的能想起来吗?画图还是要根据自己的思想来画,为自己画图才是最重要的,自己学会也才是最重要的,图画的是很好,可是脑子里什么都没有留下也都是无用的。下边的图,是按照自己的思路画的一个比较大的图。虽然看起来很臃肿,但是我的思路很清楚。
![](https://i-blog.csdnimg.cn/blog_migrate/7eacffd9345f82d1b09799322ad70542.png)
下边是对collection结合的其余内容的补充:
集合遍历的两种方法
使用Iterator迭代器:
Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。集合中把这种取元素的方式描述在Iterator接口中。Iterator接口的常用方法如下:![](https://i-blog.csdnimg.cn/blog_migrate/c1dafb14d308449121df1b185c1117d0.png)
hasNext()方法:用来判断集合中是否有下一个元素可以迭代。如果返回true,说明可 以迭代。
next()方法:用来返回迭代的下一个元素,并把指针向后移动一位。
注意:next()方法指挥指针的移动,指针移动到最后就不能返回。。
在Collection接口描述了一个抽象方法iterator方法,所有Collection子类都实现了这个方 法,并且有自己的迭代形式。代码展示:
//1,创建集合对象。
Collection<String> coll = new ArrayList<String>();
coll.add("abc1");
coll.add("abc2");
coll.add("abc3");
coll.add("abc4");
//2.获取容器的迭代器对象。通过iterator方法。
Iterator it = coll.iterator();
//3,使用具体的迭代器对象获取集合中的元素。参阅迭代器的方法
while(it.hasNext()){
System.out.println(it.next());
}
迭代器for循环的形式的使用
for (Iterator it = coll.iterator(); it.hasNext(); ) {
System.out.println(it.next());
}
注意:在进行集合元素取出时,如果集合中已经没有元素了,还继续使用迭代器的next 方法,将会发生java.util.NoSuchElementException没有集合元素的错误。所以, hasnext()方法和next()方法,两个方法要成对出现。
增强for循环:
增强for循环是JDK1.5以后出来的一个高级for循环,专门用来遍历数组和集合的。它的内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。
格式:
for(元素的数据类型 变量 : Collection集合or数组){
}
练习一:遍历数组
int[] arr = new int[]{11,22,33};
for (int n : arr) {//变量n代表被遍历到的数组元素
System.out.println(n);
}
好处:代码少,可以方便的对容器进行遍历。
弊端:没有索引,不能对容器中的某个元素进行操作。泛型:
1、泛型: 用来约束数据的数据类型
2、泛型的格式:
<数据类型>
泛型可以使用在 类,接口,方法上
3、泛型的好处
A:将运行期遇到的问题转移到了编译期
B:省去了类型强转的麻烦
C、带来了增强for循环的使用
4、泛型高级(通配符):
? extends E 上限限定,传递E类对象, E的子类对象
? Super E 下限限定,传递E类对象,E的父类对象