2017-09-20 43 views
1

我可以在Stream<String>中加載數據。 我正在使用流,因爲我無法加載內存中的所有數據,所以不允許收集。 我想要構建一個Stream<MyClass>來對MyClass的對象執行一些操作,爲流提供Stream<String>創建自定義流

+1

如果我理解正確,我會說要調用'inputStream.map(string - > toMyClass(s​​tring))',並且你有一個MyClass對象流。但是,這可能不是你想要的,我猜。你真正的問題是什麼? –

+1

我不明白,難道你不能簡單地做一個「地圖」,並通過「流」?並讓它在你通過它的一方處理? – Eugene

回答

3

既然你已經有了一個Stream<String>和假設有像一個構造,只是寫:

Stream<MyClass> stream = stringStream.map(MyClass::new); 
-2

Java示例:過濾收集不使用流

import java.util.ArrayList; 
import java.util.List; 


class Book{ 

    int book_id; 
    String book_name; 
    float price; 

    public Book() { 

    } 

    public Book(int book_id, String book_name, float price) { 
     this.book_id = book_id; 
     this.book_name = book_name; 
     this.price = price; 
    } 
} 

public class Mystringstream { 

    public static void main(String[] args) { 
    List<Book> booklist= new ArrayList<Book>(); 
    booklist.add(new Book(101,"java",500.25f)); 
    booklist.add(new Book(102,"php",300.20f)); 
    booklist.add(new Book(103,"c",400.34f)); 

    List<Float> bookpricelist=new ArrayList<Float>(); 
    for(Book book:booklist){ 
     if(book.price<500){ 
      bookpricelist.add(book.price); 

     } 
    } 
     System.out.println("Filter Book Price List: "+bookpricelist); 
    } 
} 

輸出:

過濾Book原價:300.2,400.34]

Java流實施例:過濾收集通過使用流

import java.util.ArrayList; 

import java.util.List; 

import java.util.stream.Collectors; 


class Book{ 
    int book_id; 
    String book_name; 
    float price; 

    public Book() { 

    } 

    public Book(int book_id, String book_name, float price) { 
     this.book_id = book_id; 
     this.book_name = book_name; 
     this.price = price; 
    } 
} 

public class Mystringstream { 

    public static void main(String[] args) { 

    List<Book> booklist= new ArrayList<Book>(); 
    booklist.add(new Book(101,"java",500.25f)); 
    booklist.add(new Book(102,"php",300.20f)); 
    booklist.add(new Book(103,"c",400.34f)); 

    List<Float> bookpricelist=booklist.stream().filter(p->p.price < 500).map(p->p.price).collect(Collectors.toList()); 

     System.out.println("Filter Book Price List: "+bookpricelist); 

    } 
} 

輸出: 過濾Book原價:300.2,400.34]

+0

沒有回答我的問題 – chairam