美文网首页学习感悟程序员
Java集合类系列(3)--遍历集合

Java集合类系列(3)--遍历集合

作者: 一个自学的程序员 | 来源:发表于2017-09-08 11:16 被阅读72次

    简单遍历

    使用System.out的println()方法

    使用System.out的println()方法来输出集合对象时,将输出[ele1,ele2,.....]

    以上代码输出结果为[a, b, c]

    使用Iterator接口迭代访问集合元素

    不知道大家最开始接触遍历集合元素时使用的是什么方法,我最开始学习Java集合遍历的时候看的是视频教程,其中讲到遍历集合就是使用Iterator接口迭代访问集合元素的,对这种方法还是情有独钟的。

    使用Iterator接口遍历集合其实就是使用Iterator中的hasnext和next,使用hasnext来判断集合中的下一个元素是否为空,如果是空则返回false,如果元素不为空则返回true,进入循环体使用next将下一个值打印出来。

    示例代码

    这段代码是以list为准进行Iterator迭代输出,同样对于Set和Map一样是可以使用Iterator进行迭代输出遍历集合元素,使用Iterator进行迭代输出集合元素的关键就是将原有集合转化成Iterator,因为我们最终是要使用hasnext和next进行输出的,只有将原有集合元素进行Iterator转化,我们才能进行hasnext和next的调用,掌握这一点也就掌握了Iterator遍历集合的方法。

    另外java8为Iterator新增了一个forEachRemaining方法,我们通过这个方法可以使用Lambda表达式来遍历Iterator,示例如下

    我们可以看到,相比较上一个代码中,红色代码是主要的修改代码,这就是使用Lambda表达式来遍历Iterator。

    使用foreach循环遍历集合元素

    在上面我们那可以看到使用Iterator的forEachRemaining方法对集合进行遍历一行代码就可以搞定,相比较使用hasnext和next更加简洁方便,但是大家可能对Lambda表达式不太熟悉,那么我们可以使用foreach来循环遍历集合元素。

    foreach是Java5的特性,感觉这个方法遍历集合元素真是很简单,话不多的说,让我们来看下如何使用的吧!

    这就是foreach遍历集合元素,看起来都很简洁,不妨多尝试一下这样的方法。这段代码什么意思呢?foreach的使用就是使用for(),括号里面是A a:b的形式,b一般就是指的你的集合对象,比如你创建了一个LIst对象,List list = new ArrayList<>(); 那么这个b就是list,前面的A一般就是指的你集合里面的元素类型,而a就是我们要打印的元素的一个变量,把集合里的每一个值赋值给a然后逐个打印输出。

    使用Lambda表达式遍历集合

    对于简单遍历输出结果一般是[a,b]这种形式,似乎用到的不是太多,我们还可以使用Lambda表达式进行集合的遍历,在讲遍历之前让我们来先简单认识一下Lambda表达式吧!

    Lambda表达式

    在最开始接触lambda表达式的时候是一头雾水,说白了就是感觉看不懂,不知道怎么使用,lambda表达式是Java8新增的一个特性,简单来说是可以将一些复杂的代码简洁化,我觉得关于lambda表达式这块可以进行专题学习,不然不能都透彻理解它,因为今天主要讲的还是Java集合,其中要使用lambda表达式,因此只做简单介绍。

    在我看来lambda最简单的一个形式就是() -> a,什么意思呢?我们再稍微详细的说一下,我们看如下:

    1. () -> 5 这代表lambda表达式不需要参数,返回值为5

    2. x -> x*3 这代表lambda表达式需要接受一个参数,然后返回这个参数的二倍。

    3. (a,b) -> a+b 这代表lambda表达式需要接受两个参数,然后返回这两个参数的和。

    等。

    相信看到这里我们对lambda表达式似乎有那么点明白了,但是还是有点模糊,别急,我们再继续往下看,我们来举个例子

    使用Lambda表达式遍历集合用到了一个foreach默认方法。关于Lambda的学习还可以继续深入,以专题形式进行学习,私下应尽可能找资料自主学习,后续也会单独写一篇有关Lambda表达式的文章!

    好了,以上就是一些简单的遍历集合元素的方法了!

    相关文章

      网友评论

        本文标题:Java集合类系列(3)--遍历集合

        本文链接:https://www.haomeiwen.com/subject/tmsgjxtx.html