题目需求:
   1:第一个队伍只要名字为3个字成员的姓名,存储到新集合
2:第一个队伍筛选之后只要前3人;存储到一个新集合
3:第2个队伍只要姓张的成员姓名;存储到一个新集合
4:第2个队伍不要前2人,存储到一个新集合
5:将2个队伍合并到一个队伍,存储到一个新集合
6:根据姓名创建Person对象,存储到一个新集合 //使用普通方法进行筛选 前面加了一个时间类
import java.util.ArrayList;
public class Demo08List {
public static void main(String[] args) {
    //定义一个时间类记录开始时间
long start=System.currentTimeMillis();
    //定义一个集合
ArrayList<String>one=new ArrayList<>();
one.add("东方不败");
one.add("流星锤");
one.add("汪汪");
one.add("利亚东");
one.add("龙虎彪");
one.add("看风景");
one.add("超哥");
ArrayList<String>one1=new ArrayList<>();
for (String name : one) {
if (name.length()==3){
one1.add(name);
}
}
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("4399");
two.add("土豆");
two.add("张三丰");
ArrayList<String>two1=new ArrayList<>();
for (String name : two) {
if (name.startsWith("张")){
two1.add(name);
}
}
ArrayList<String>two2=new ArrayList<>();
for (int i = 2; i < two1.size(); i++) {
two2.add(two1.get(i));
}
ArrayList<String>all=new ArrayList<>();
all.addAll(one2);
all.addAll(two2);
ArrayList<Person>list=new ArrayList<>();
for (String name:all) {
list.add(new Person(name));
}
for (Person person : list) {
System.out.println(person);
}
      //结束的时间
long end=System.currentTimeMillis();
      //以毫秒值返回
System.out.println(end-start);
}
} 使用Stream流的方式进行筛选
import java.util.ArrayList;
import java.util.stream.Stream; public class Demo09list {
public static void main(String[] args) {
long start=System.currentTimeMillis();
ArrayList<String> one=new ArrayList<>();
one.add("东方不败");
one.add("裘千仞");
one.add("大神");
one.add("利亚东");
one.add("秦始皇");
one.add("???");
one.add("超哥"); Stream<String> stringStream = one.stream().filter(name ->
name.length() == 3).limit(3);
ArrayList<String>two=new ArrayList<>();
two.add("独孤求败");
two.add("张百忍");
two.add("张无忌");
two.add("爱奇艺");
two.add("4399");
two.add("土豆");
two.add("张三丰");
// long start=System.currentTimeMillis();
Stream<String> towStream = two.stream().filter
(name -> name.startsWith("张")).skip(2);
Stream.concat(stringStream,towStream).map(name->
new Person(name)).forEach(p-> System.out.println(p));
long end=System.currentTimeMillis();
      //以毫秒值返回去
        System.out.println(end-start);
}
}

Stream流固然可以简化代码格式但是这样的执行速度值得一试??

关于Java8 Stream流的利与弊 Java初学者,大神勿喷的更多相关文章

  1. 【转】Java8 Stream 流详解

      当我第一次阅读 Java8 中的 Stream API 时,说实话,我非常困惑,因为它的名字听起来与 Java I0 框架中的 InputStream 和 OutputStream 非常类似.但是 ...

  2. Java8 Stream流

    第三章 Stream流 <Java8 Stream编码实战>的代码全部在https://github.com/yu-linfeng/BlogRepositories/tree/master ...

  3. Java8 Stream流API常用操作

    Java版本现在已经发布到JDK13了,目前公司还是用的JDK8,还是有必要了解一些JDK8的新特性的,例如优雅判空的Optional类,操作集合的Stream流,函数式编程等等;这里就按操作例举一些 ...

  4. Java8——Stream流式操作的一点小总结

    我发现,自从我学了Stream流式操作之后,工作中使用到的频率还是挺高的,因为stream配合着lambda表达式或者双冒号(::)使用真的是优雅到了极致!今天就简单分(搬)享(运)一下我对strea ...

  5. 【JDK8】Java8 Stream流API常用操作

    Java版本现在已经发布到JDK13了,目前公司还是用的JDK8,还是有必要了解一些JDK8的新特性的,例如优雅判空的Optional类,操作集合的Stream流,函数式编程等等;这里就按操作例举一些 ...

  6. Java8 Stream流方法

    流是Java API的新成员,它允许以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).就现在来说,可以把它们看成遍历数据集的高级迭代器.此外,流还可以透明地并行处理,无需写任何多 ...

  7. Java8 - Stream流:让你的集合变得更简单!

    前段时间,在公司熟悉新代码,发现好多都是新代码,全是 Java8语法,之前没有了解过,一直在专研技术的深度,却忘了最初的语法,所以,今天总结下Stream ,算是一份自己理解,不会很深入,就讲讲常用的 ...

  8. java8 stream 流 例子

    Trader raoul = new Trader("Raoul", "Cambridge"); Trader mario = new Trader(" ...

  9. Java8 Stream 流使用场景和常用操作

    JAVA8内置的函数式编程接口应用场景和方式 pojo类对象和默认创建list的方法 import lombok.AllArgsConstructor; import lombok.Data; imp ...

随机推荐

  1. TF的模型文件

    TF的模型文件 标签(空格分隔): TensorFlow Saver tensorflow模型保存函数为: tf.train.Saver() 当然,除了上面最简单的保存方式,也可以指定保存的步数,多长 ...

  2. JQuery DataTables Selected Row

    获取单行选中的值 $('#MonitoringTypeTable tbody').on('click', 'tr', function () { if ($(this).hasClass('selec ...

  3. C++ char 类型:字符型和最小的整型

    C++ 中没有 byte,Java 中有 byte. 但是 C++ 有 char,char 是可用来放整数的最小字节类型. #include <iostream> int main() { ...

  4. linux下从一台服务器复制文件或文件夹到本地

    1.从服务器复制文件到本地:scp root@×××.×××.×××.×××:/data/test.txt /home/myfile/ root@×××.×××.×××.×××   root是目标服务 ...

  5. gsoap入门:C/C++代码生成及编译--包含soapcpp2 -qname添加命名空间后报错的解决方法--可用

    gsoap是什么 先来一段百度百科,说说gsoap是什么: gSOAP一种跨平台的开源的C/C++软件开发工具包.生成C/C++的RPC代码,XML数据绑定,对SOAP Web服务和其他应用形成高效的 ...

  6. Android Bluetooth hci 命令分析

    Android在连接BLE设备的时候,遇到连接没多久就自动断开的情况.通过HCI来分析一下. BLE设备发送连接参数更新请求 3909 15:53:01.224737 TexasIns_f0:d3:4 ...

  7. 给你的app添加桌面widget

    首先,什么是桌面widget,桌面widget是一种桌面插件,如下图: 这种类型的控件叫做widget,一般长按桌面会弹出一个界面让你选择控件,选择完了拖到桌面就能使用了. 下面我们为这个app来添加 ...

  8. js返回上一页并刷新、返回上一页、自动刷新页面

    一.返回上一页并刷新 <a href="javascript:" onclick="self.location=document.referrer;"&g ...

  9. Golang 笔记 5 go语句

     Go语句和通道类型是Go语言的并发编程理念的最终体现.与defer语句相同,go语句也可以携带一个表达式语句.Go语句的执行会很快结束,并不会对当前流程的进行造成阻塞或明显的延迟.一个简单的示例: ...

  10. Java编程常见缺陷汇总(一)

     [案例1] public boolean equalNode(JudgeNode a, JudgeNode b) { return a.getId() == b.getId(); } [点评] 应在 ...