zoukankan      html  css  js  c++  java
  • 三种List集合的遍历方式

    首先我们来建一个简单的实体类:(素材来源于:https://www.cnblogs.com/lianoulay/p/8849747.html

    public class News{
        private int id;
        private String title;
        private String author;
        
        public News(int id, String title, String author) {
            super();
            this.id = id;
            this.title = title;
            this.author = author;
        }
        
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public String getAuthor() {
            return author;
        }
    
        public void setAuthor(String author) {
            this.author = author;
        }
    
    }

    第一种、最基础的遍历方式:for循环,指定下标长度,使用List集合的size()方法,进行for循环遍历

    for( int i = 0 ; i < list.size() ; i++) {
    //内部不锁定,效率最高,但在多线程要考虑并发操作的问题。 System.out.println(list.get(i)); }
    import java.util.ArrayList;
    
    public class Demo01 {
    
      public static void main(String[] args) {
    
       ArrayList<News> list = new ArrayList<News>();
        
       list.add(new News(1,"list1","a"));
       list.add(new News(2,"list2","b"));
       list.add(new News(3,"list3","c"));
       list.add(new News(4,"list4","d"));
       for (int i = 0; i < list.size(); i++) {
                News s = (News)list.get(i);
                System.out.println(s.getId()+"  "+s.getTitle()+"  "+s.getAuthor());
        }
      }
    }

    第二种、较为简洁的遍历方式:使用foreach遍历List,但不能对某一个元素进行操作(这种方法在遍历数组和Map集合的时候同样适用)

    for(String str : list) {
    //其内部实质上还是调用了迭代器遍历方式,这种循环方式还有其他限制,不建议使用。
        System.out.println(str);
    }
    import java.util.ArrayList;
    
    public class Demo02 {
    
      public static void main(String[] args) {
    
        ArrayList<News> list = new ArrayList<News>();
         list.add(new News(1,"list1","a"));
         list.add(new News(2,"list2","b"));
         list.add(new News(3,"list3","c"));
         list.add(new News(4,"list4","d"));
    
        for (News s : list) {
                System.out.println(s.getId()+"  "+s.getTitle()+"  "+s.getAuthor());
       }
      }
    }

    第三种、适用迭代器Iterator遍历:直接根据List集合的自动遍历

    Iterator<String> iter = list.iterator();
    while(iter.hasNext()){  
    //执行过程中会执行数据锁定,性能稍差,若在循环过程中要去掉某个元素只能调用iter.remove()方法。
        System.out.println(iter.next());
    }
    import java.util.ArrayList;
    
    public class Demo03 {
    
      public static void main(String[] args) {
    
       ArrayList<News> list = new ArrayList<News>();
        
       list.add(new News(1,"list1","a"));
       list.add(new News(2,"list2","b"));
       list.add(new News(3,"list3","c"));
       list.add(new News(4,"list4","d"));
       
         Iterator<News> iter = list.iterator();
         while (iter.hasNext()) {
                News s = (News) iter.next();
                System.out.println(s.getId()+"  "+s.getTitle()+"  "+s.getAuthor());
        }
      }
    }    

    上面三种遍历方式差别不是特别大,在没有特定的要求时,均可以使用。不过根据不同的特殊情况,要合理选择方式,来提高开发的效率。

  • 相关阅读:
    AsWing入门教程 1.4 在面板中显示信息
    AsWing 入门教程 1.3 给框架定位
    LocalConnection AS2与AS3通信说明
    Tuscany SCA与Spring、Hibernate整合之简洁方法
    《spring2.0技术手册》读书笔记九spring与hibernate整合DAO的书写,HibernateTemplate解析
    求n个骰子各点数和出现的概率动态规划
    oracle常用函数总结
    Hadoop概要MapReduce的认识
    HDFS的使用及编程
    Apache Hadoop的安装与配置
  • 原文地址:https://www.cnblogs.com/wdzhz/p/11555190.html
Copyright © 2011-2022 走看看