繁体   English   中英

有没有更好的方法可以使用Stream编写?

[英]Is there any better way I can write using Stream?

    public List<ArrayList<String>> removeRow(int columnIndex,Set<String> masterData,List<ArrayList<String>> rowColumnData){ 

        List<ArrayList<String>> finalData= new ArrayList<ArrayList<String>>();

        for(ArrayList<String> data: rowColumnData){
            String columnVal=data.get(columnIndex);
            if(masterData.contains(columnVal){
            finalData.add(data);
        }

        return finalData;
    }

如果列的一组特定值不匹配,我需要过滤掉行。 我的masterData包含30,000条记录。 我的rowColumnData将保存2M条记录,基本上是一列,其列值存储在数组列表中,整个表数据为List>。

如何使用流API编写能够提供更好性能的代码?

在使用流时,我在性能水平上并不擅长但是你可以通过使用parallelStream来实现这一点,其中多线程获取处理数据,需要知道一些有趣的事实Java 8的流:为什么并行流更慢?

List<List<String>> result = rowColumnData
                            .parallelStream()
                            .filter(l->masterData.contains(l.get(columnIndex)))
                            .collect(Collectors.toList());

但请注意

List E get(int index)抛出:

IndexOutOfBoundsException - 如果索引超出范围(索引<0 || index> = size())

设置boolean contains(Object o)抛出:

NullPointerException - 如果指定的元素为null并且此set不允许null元素(可选)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM