Stream-常见方法(下)

常见方法

跳过前几个:skip

如果希望跳过前几个元素 可以使用skip方法获取一个截取之后的新流

Stream<T> skip(long n);

如果流的当前长度大于n 则跳过前n个 否则将会得到一个长度为0的空流

 

 代码:

public static void main(String[] args) {
        //获取一个String类型的stream流
        Stream<String> stream = Stream.of("z", "c", "d", "e","a","b");
        //使用Skip方法 跳过前三个的元素数据
        Stream<String> skip = stream.skip(3);
        //遍历skip流
        skip.forEach(name-> System.out.println(name));
    }

运行结果:

 

 组合:concat

如果两个流 希望合并成为一个流 那么可以使用Stream接口的静态方法concat:

static<T>stream<T>concat(Stream<? extends T>a,Stream<? extends T>b)

备注:这是一个静态方法 与java.lang.String当中的concat方法是不同的

代码:

复制代码
public static void main(String[] args) {
        //获取一个String类型的stream流
        Stream<String> stream1 = Stream.of("str");
        //获取一个String类型的stream流
        Stream<String> stream2 = Stream.of("ing");
        //将量stream流进行合并使用concat方法
        Stream<String> concat = Stream.concat(stream1, stream2);
        //进行遍历输出
        concat.forEach(name-> System.out.println(name));
    }
复制代码

运行结果:

练习:集合元素处理(传统方式)

题目:

现在有两个ArrayList集合存储队伍当中的多个成员姓名 要求使用传统的for循环(或增强for循环)依次进行以下若干操作步骤:

1.第一个队伍只要名字为3个字的成员姓名;存储到一个新集合中

2.第一个队伍筛选之后只要前3个人;存储到一个新的集合中

3.第二个队伍只要姓张的成员姓名;存储到一个新集合中

4.第二个队伍筛选之后不要前2个人;存储到一个新集合中

5.将两个队伍合并为一个队伍 存储到一个新的集合中

6.根据姓名创建Person对象 存储到一个新集合中

7.打印整个队伍的Person对象信息

代码

复制代码
package demo24.demoStream;

import java.util.ArrayList;
import java.util.stream.Stream;

public class Demo01StreamTest {
    public static void main(String[] args) {
        //第一支队伍
        ArrayList<String> one = new ArrayList<>();
        one.add("张三齐");
        one.add("李四");
        one.add("王五");
        one.add("宋老太");
        one.add("赵老头");
        //1.第一个队伍只要名字为3个字的成员姓名;存储到一个新集合中
        ArrayList<String> one1 = new ArrayList<>();
        for (String name : one) {
            if (name.length()==3){
                one1.add(name);
            }
        }
        //2.第一个队伍筛选之后只要前3个人;存储到一个新的集合中
        ArrayList<String> one2 = new ArrayList<>();
        for (int i = 0; i <3; i++) {
            one2.add(one1.get(i));
        }


        ArrayList<String> two = new ArrayList<>();
        two.add("曹操");
        two.add("赵云");
        two.add("关羽");
        two.add("张飞");
        two.add("张思");
        //3.第二个队伍只要姓张的成员姓名;存储到一个新集合中
        ArrayList<String> two1 = new ArrayList<>();
        for (String name : two) {
            if (name.startsWith("张")){
                two1.add(name);
            }
        }
        //4.第二个队伍筛选之后不要前2个人;存储到一个新集合中
        ArrayList<String> two2 = new ArrayList<>();
        for (int i = 2; i <two1.size(); i++) {
            two2.add(two1.get(i));//i不包含0 1
        }
        //5.将两个队伍合并为一个队伍 存储到一个新的集合中
        ArrayList<String> all = new ArrayList<>();
        all.addAll(one2);
        all.addAll(two2);

        //6.根据姓名创建Person对象 存储到一个新集合中
        ArrayList<Person> list = new ArrayList<>();
        for (String name : all) {
            list.add(new Person(name));
        }
        //7.打印整个队伍的Person对象信息
        for (Person person:list){
            System.out.println(person);
        }
    }
}
复制代码

运行结果:

posted @   baimingze  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示