首页 > 其他分享 >Stream-常见方法(下)

Stream-常见方法(下)

时间:2022-08-22 17:56:08浏览次数:62  
标签:name Stream skip ArrayList 常见 add 方法 concat

常见方法

跳过前几个:skip

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

Stream<T> skip(long n);

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

 

代码:

/*
        Stream流中常用方法——skip:用于跳过元素
    如果希望跳过前几个元素,可以使用skip方法获取一个截取之后的新流;
    Stream<T> skip(long n);
        如果流的当前长度大于n,则跳过前n个;否则将会得到一个长度为0的空流
 */
public class BStream7 {
    public static void main(String[] args) {
        //定义一个字符串数组
        String[] arr = {"美羊羊","喜羊羊","懒羊羊","灰太狼","红太狼","小灰灰"};
        //获取Stream流
        Stream<String> arr1 = Stream.of(arr);
        //使用Stream流中的截取并重新返回一个新数组的方法skip()方法
        Stream<String> skip = arr1.skip(3);
        //遍历输出
        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方法是不同的

代码:

/*
        Stream流中的常用方法——concat:用于把流组合到一起
    如果有两个流,希望合并成为一个流,那么可以使用静态方法concat
    static <T> Stream<T> concat (Stream<? extends T> a,Stream <? extends T> b)
 */
public class BStream8 {
    public static void main(String[] args) {
        Stream<String> arr1 = Stream.of("张三丰", "张翠山", "周芷若", "赵敏", "张无忌");
        Stream<String> arr2 = Stream.of("美羊羊", "喜羊羊", "懒羊羊", "灰太狼", "红太狼", "小灰灰");
        //调用Stream流中的concat()方法把两个流合并成一个流
        Stream<String> concat = Stream.concat(arr1, arr2);
        //遍历输出
        concat.forEach(name-> System.out.println(name));
    }
}

 

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

题目:

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

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

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

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

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

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

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

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

代码:

public class BStream9 {
    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);
        }
    }
}

运行结果:

 

标签:name,Stream,skip,ArrayList,常见,add,方法,concat
From: https://www.cnblogs.com/qihaokuan/p/16613576.html

相关文章

  • Stream-常见方法(中)
    常用方法:映射:map如果需要将流中的元素映射到另一个流中,可以使用map方法。方法签名:<R>Stream<R>map(Function<?superT,?extendsR>mapper);该接口需要一个Funct......
  • Stream-常见方法(上)
    常见方法   流模型的操作很丰富,这里介绍一些常用的API,这些方法可以被分成两种:延迟方法:返回值类型仍然是Stream接口自身类型的方法因此支持链式调用(除了终结方法......
  • 共享USB打印机设置方法
    打印机共享一、准备所有计算机在同一个网段。所有计算机在同一个工作组,组名可以自定义,默认WORKGROUP。使用超级管理员用户,目的是为了激活guest用户。验证之后可......
  • 解决死锁之路 - 常见 SQL 语句的加锁分析
    解决死锁之路-常见SQL语句的加锁分析这篇博客将对一些常见的SQL语句进行加锁分析,看看我们平时执行的那些SQL都会加什么锁。只有对我们所写的SQL语句加锁过程了......
  • JQuery_遍历_for循环、JQuery_遍历2_each方法
    JQuery_遍历_for循环2.遍历1.js的遍历方式*for(初始化值;循环结束条件;步长)2.jq的遍历方式1.jq对象.each(callback)2.$.each(object,[callback])3.for..of: ......
  • 一次跨域请求出现 OPTIONS 请求的问题及解决方法
    浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都属于跨域。前端这边有一个get请求,在请求的header里面要添加两个自定义的header。GEThttp:......
  • Stream流-流式思想概述和获取流
    流式思想概述整体来看,流式思想类似于工厂车间的“生产流水线”。  当需要对多个元素进行操作(特别是多步操作)的时候,考虑到性能及便利性,我们应该首先拼好一个“模型”......
  • Linux启动Mysql出现command not found的解决方法
    当在Linux中安装Mysql后,不管是在根目录下还是在安装mysql的bin下执行mysql-uroot-p结果都是commandnotfound,如下图所示:问题原因,linux默认启动Mysql,会在根目录下的bin中......
  • [四、Xcode界面]19代码方法块的折叠和展开
    热烈欢迎,请直接点击!!!进入博主AppStore主页,下载使用各个作品!!!注:博主将坚持每月上线一个新app!!!......
  • JAVA中子类使用super.getClass()方法
    一般来说,java中调用getClass().getName()这个方法可以获取本类的名称,例如:importjava.util.Date;publicclassTest06extendsDate{publicstaticvoidmain(St......