首页 > 其他分享 >传统集合的多步遍历代码

传统集合的多步遍历代码

时间:2022-10-17 17:26:00浏览次数:42  
标签:遍历 String 多步 ArrayList list add 集合

Stream流

说到Stream便容易想到I/O Stream,而实际上,谁规定"流"就一定是"I0流"呢?在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,

用于解决已有集合类库既有的弊端。

传统集合的多步遍历代码

几乎所有的集合(如collection 接口或Map 接口等)都支持直接或间接的遍历操作。而当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,

最典型的就是集合遍历。

代码:

复制代码public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        for (String s : list) {
            System.out.println(s);
        }
    }
复制代码

这是一段非常简单的集合遍历操作:对集合中的每一个字符串都进行打印输出操作

循环变量的弊端

java 8的Lambda让我们可以更加专注于做什么 而不是怎么做 这点此前已经结合内部类进行了对比说明 现在 我们仔细体会一下代码 可以看到:

  • for循环的语法就是“怎么做”
  • for循环的循环体才是“做什么”

要进行遍历 但是是遍历的唯一方式吗 遍历是指每一个元素逐一进行处理 而并不是从第一个到最后一个顺次处理的循环 前者是目的 后者是方式

试想一下 如果希望对集合中的元素进行筛选过滤:

1.将集合A根据条件一过滤为子集B

2.然后再根据条件二过滤为子集C

使用传统的方式,遍历集合,对集合中的数据进行过滤

public static void main(String[] args) {
        // 创建一个List集合,存储姓名
        ArrayList<String> list = new ArrayList<>();
        list.add("张无忌");
        list.add("周芷若");
        list.add("赵敏");
        list.add("张三");
        list.add("张三丰");
        // 对list集合中的元素进行过滤,只要以张开头的元素,存储到新的集合中
        ArrayList<String> listA = new ArrayList<>();
        for (String s : list){
            if (s.startsWith("张")){
                listA.add(s);
            }
        }
        // 对listA集合进行过滤,只要姓名长度为3的人,存储到一个新集合中
        ArrayList<String> listB = new ArrayList<>();
        for (String s : listA){
            if (s.length() == 3){
                listB.add(s);
            }
        }
        // 遍历listB集合
        for (String s : listB){
            System.out.println(s);
        }
    }

标签:遍历,String,多步,ArrayList,list,add,集合
From: https://www.cnblogs.com/shenziyi/p/16798873.html

相关文章