關於Java8 Stream流的利與弊 Java初學者,大神勿噴


   題目需求:
   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流固然可以簡化代碼格式但是這樣的執行速度值得一試??


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM