2017-09-20 96 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