行业知识
Java --- 集合(1)--- 带你了解Collection接口以及三种遍历方式
引言:本期博客摘选黑马程序员与Java从入门到精通,如果有不准确的地方还请指出,另外也感谢各位大佬点击进来观看。
目录
一.什么是集合?
二.单列集合的体系结构:
三.Collection接口的使用:
四.Collection的三种遍历方式:
1.迭代器遍历:
2.增强for遍历:
3.Lambda表达式遍历:
一.什么是集合?
在Java中,java.util包中提供了一些集合类,而这些集合类也会被称为容器。这里提到容器,我们也会想到数组,那么数组与集合的区别是什么呢?数组的长度是固定的,而集合的长度是可变的,另外数组是被用来存储基本数据类型,而集合是可以被用来存储引用数据类型,如果想存储基本数据类型,则需给对应的基本数据类型以包装类的形式定义。
我们常用的集合分为两类:单列集合(Collection)与双列集合(Map)。本期内容将给大家介绍单列集合的相关内容。
二.单列集合的体系结构:
请看下面图片:(图片摘要黑马程序员)
上面红色框代表接口,而蓝色框则代表实现类。
三.Collection接口的使用:
Collection接口是单列集合的祖宗接口,因为是接口嘛,所以全部单列集合都可以通过继承来使用接口内部的方法。
下图代码给大家带来上面方法的使用,由于Collection是接口,以至于不可以被直接使用,这里就先创建他的实现类对象。
import java.util.ArrayList;import java.util.Collection;public class Test1 { public static void main(String[] args) { Collection coll = new ArrayList(); //添加 coll.add("zhangsan"); coll.add("lisi"); coll.add("wangwu"); //打印 System.out.println(coll);//[zhangsan, lisi, wangwu] //删除 System.out.println(coll.remove("lisi"));//true System.out.println(coll);//[zhangsan, wangwu] //判断是否包含 System.out.println(coll.contains("zhangsan"));//true System.out.println(coll.contains("lisi"));//false //判空 System.out.println(coll.isEmpty());//false //元素个数 System.out.println(coll.size());//2 }} 四.Collection的三种遍历方式:
1.迭代器遍历:
迭代器,Iterator,也是一个接口,主要用于遍历集合中的元素。
下面代码为遍历模板:
import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class Test1 { public static void main(String[] args) { Collection coll = new ArrayList(); //添加 coll.add("zhangsan"); coll.add("lisi"); coll.add("wangwu"); Iterator it = coll.iterator(); while(it.hasNext()){ String str = it.next(); System.out.println(str); } }} 那么如何理解迭代器的两种方法呢?
1.hasNext()方法是判断当前位置有没有元素,起到判断的作用。
2.next()方法会做两件事,首先获取当前元素并返回,然后将迭代器向下移动
所以利用这两种方法就可以使用迭代器获取集合内部对象。
注意!!!
- 迭代器使用完成不会再重新复位进行使用。
- 每次while循环只能使用一次next()方法,因为如果使用两次,在最后会发生迭代器越界,导致报错。
- 迭代器遍历不可以使用集合的方法增加或者删除,我们可以利用迭代器内部方法it.remove(),移除的是当前迭代器指向的数据。
2.增强for遍历:
为了简化迭代器树下,在JDK5后出现了该方法,其内部原理就是个迭代器,所有的单列集合以及数组才可以利用该方法进行遍历。
public class Test1 { public static void main(String[] args) { Collection coll = new ArrayList(); //添加 coll.add("zhangsan"); coll.add("lisi"); coll.add("wangwu"); for(String s : coll){ System.out.println(s); } }} 我们在这里可以把 s 当成第三方变量,在循环过程依次表示集合中的每一个数据。
注意,利用s是不会修改集合中原本的数据的!!!
3.Lambda表达式遍历:
在JDK8开始,Java给我们提供了更简单且直接的遍历集合的方式。
| 方法名称 | 说明 |
| default void forEach(Consumer |