我想找到一种优雅的方式:
我有两个集合 A 和 B,如果它们都不为空,那么我需要做交集(将公共(public)元素存储在另一个列表中)。
如果其中一个是空的,我将不得不获取另一个的所有元素。
如果两者都为空,则生成的集合将为空。
有没有办法在不使用很多 if 条件且性能良好的情况下解决这个问题?
这是可行的,但不是很好:
import org.apache.commons.collections4.CollectionUtils;
...
...
List<Long> listA = new ArrayList<Long>();
List<Long> listB = new ArrayList<Long>();
//initialisation list A & listB
List<Long> outputList = null;
if(listA.size()>0 && listB.size() >0) {
outputList = new ArrayList(CollectionUtils.intersection(listB, listA));
}
else if(listA.size()==0){
outputList = listB;
}
else if(listB.size()==0){
outputList = listA;
}
谢谢!
最佳答案
我不会这么想,仅仅因为你的情况:
If one list is empty, return the other list.
这不是交集的典型定义,我不确定它是否是标准库中涵盖的常见操作。因此,您必须自己处理该逻辑。
如果你真的想摆脱 if 语句,那么你可以使用三元运算符:
return listA.isEmpty() ? listB :
listB.isEmpty() ? listA :
new ArrayList(CollectionUtils.intersection(listB, listA));
关于Java交集集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34732217/