首页 > 其他分享 >List的遍历

List的遍历

时间:2023-11-09 21:34:45浏览次数:31  
标签:遍历 迭代 List list System println out

List的遍历方式

迭代器遍历,普通for遍历,增强for遍历,Lamda遍历,列表迭代器遍历

演示代码如下

public class Main {
    public static void main(String a[]) {
        List<String> list  = new ArrayList<>();
        list.add("zhang");
        list.add("wang");
        list.add("li");
        list.add("chen");
        list.add("lin");
        
        //1.迭代器遍历,需要用到Iterator
        System.out.println("迭代器遍历");
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            System.out.printf(it.next()+"  ");
        }
        System.out.println();
        
          //2. 普通for遍历,借用size()方法
        System.out.println("普通for遍历");
        for (int i = 0; i < list.size(); i++) {
            System.out.printf(list.get(i)+"  ");
        }
        System.out.println();
        
        //3.增强for,也就是foreach
        System.out.println("增强for遍历");
        for (String string : list) {
            System.out.printf(string+"  ");
        }
        System.out.println();
        
        //4.lamda遍历,利用List的forEach
        System.out.println("Lamda遍历");
        list.forEach(s->System.out.printf(s+"  "));
        System.out.println();
        
        //5.列表迭代器
        System.out.println("列表迭代器遍历");
        ListIterator<String> lit = list.listIterator();
        while(lit.hasNext()) {
            System.out.printf(lit.next()+"  ");
        }
    }
}

运行截图:

 总结:

迭代器遍历:这种方法可以保证遍历的顺序,但每次迭代都会创建新的Iterator对象,这会影响性能。此外,使用Iterator时需要注意检查hasNext(),这可能会使代码显得不够简洁,甚至报错。

 

普通for遍历:这种方法需要知道元素的索引,这在某些情况下可能是必要的。然而,如果List很大,那么每次访问都需要进行索引计算,这会降低性能。此外,这种方法也无法保证遍历的顺序。

增强for遍历:这种方法最简单,可读性最好,但它的性能不是最优。因为每次迭代都会创建Iterator对象,而创建Iterator对象是有额外开销的。此外,这种方法不能保证遍历的顺序,因为List的元素可能被其他线程改变。

Lamda遍历这种方法在Java 8之后引入,结合了for-each循环和索引,使遍历更高效。它没有创建额外的Iterator或ListIterator对象,因此性能较好。此外,使用这种方法时不需要检查遍历是否结束,因为它会在遍历结束后自动停止。

 

列表迭代器遍历:这种方法可以保证遍历的顺序,并且可以获取前一个和后一个元素。但是,它也有类似Iterator的问题,即每次迭代需要创建新的ListIterator对象。不过它可以在遍历时添加元素,这是迭代器不能实现的

 

 

 

标签:遍历,迭代,List,list,System,println,out
From: https://www.cnblogs.com/kandh/p/17822856.html

相关文章

  • Set&List&Map
    Map概述Anobjectthatmapskeystovalues.Amapcannotcontainduplicatekeys;eachkeycanmaptoatmostonevalue.Map将key映射到value;Map的key不能重复,每个key只能映射一个value;Thisinterfacetakestheplaceofthe<tt>Dictionary</tt>class,whichwasa......
  • 面试必刷TOP101:23、二叉树的前序遍历
    题目题解importjava.util.*;publicclassSolution{publicvoidpreorder(List<Integer>list,TreeNoderoot){//遇到空节点则返回if(root==null)return;//先遍历根节点list.add(root.val);//再去左子树......
  • 无涯教程-批处理 - For 语句 - List Implementations函数
    "for"构造为批处理文件提供循环功能,以下是用于处理值列表的"for"语句的常见结构。FOR%%variableINlistDOdo_something经典的"for"语句由以下部分组成-variable变量    -对于整个循环,此步骤仅执行一次,并用于声明将在循环中使用的任何变量,在批处理脚本中变量声......
  • 'ddlCities' has a SelectedValue which is invalid because it does not exist in th
    this.ddlCities.DataSource=GetAll_List();this.ddlCities.DataTextField="Name";this.ddlCities.DataValueField="Id";this.ddlCities.DataBind();错误:'ddlCities'hasaSelectedValuewhichisinvalidbecauseitdoe......
  • 线程安全集合(JDK1.5之前和之后)、CopyOnWriteArrayList、CopyOnWriteArraySet
    JDK1.5之前JDK1.5之前:Collections.synchronizedList JDK1.5之后CopyOnWriteArrayList   CopyOnWriteArraySet    ......
  • js:遍历数组
    1.循环类型forEach()forEach();语法forEach(callbackFn)forEach(callbackFn,thisArg)例子/****@param{any}element数组中正在处理的当前元素*@param{number}index数组中正在处理的当前元素的索引。*@param{Array}array1调用了forEach()的数组本身*/co......
  • CMake多个CMakeLists.txt共同合作编译一个C++项目
    一、概述在C++项目比较大或者要根据不同的规则生成不同的执行文件或者动态库/静态库的时候。单独的CMakeLists.txt会变的比较复杂,此时可以利用CMakeLists.txt的父子关系分目录分模块的进行编译及输出。就相当于项目模块化编译参考博客:【大丙课堂】二、具体实现......
  • ArrayList的contains()方法的性能问题及优化方法
    背景今天定位一个接口耗时问题,通过日志定位到在数据库查询完毕后,中间一段逻辑耗时很长有十几秒的样子,发现是循环中使用ArraysList中的contains方法,当循环数量级变得很大时,执行时间变得不可控。代码示例//有5万个门店List<Store>storeList=storeMapper.se......
  • 二叉树前中后序遍历(递归和非递归)+层次遍历
    直接看代码啦!前中后指的是跟被访问的次序!递归很好理解,重点是非递归!!!1#define_CRT_SECURE_NO_WARNINGS2#include<iostream>3#include<fstream>4usingnamespacestd;56typedefstructTreeNode7{8intdata;9intflag;10str......
  • Uncaught TypeError: Cannot read property ‘addEventListener‘ of null 求助!!!!!!
    今天在项目中遇到个问题如下:vue项目中public的index.html文件script标签引入了一个外部的js文件,里面有一个方法每次调用的时候都会报错UncaughtTypeError:Cannotreadproperty‘addEventListener‘ofnull,网上查的所有办法都试过了:跟标签摆放先后位置,放到onload方法中都没......