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's streams: why parallel stream is slower?
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元素(可选)