[英]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.