【发布时间】:2016-01-11 22:20:21
【问题描述】:
我想找到一个优雅的方法:
我有两个集合 A 和 B,如果它们都不为空,那么我需要做交集(将公共元素存储在另一个列表中)。
如果其中一个是空的,我将不得不取另一个的所有元素。
如果两者都为空,则生成的集合将为空。
有没有一种方法可以在不使用许多 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;
}
谢谢!
【问题讨论】:
-
这种方法有什么不满意的地方?这似乎是直截了当和明确的。试图变得可爱并尽量减少行数只会让代码更难阅读。
-
我想了解为什么不能使用 collections.retainAll() ?例如:说 List1.retainAll(list2)
标签: java collections apache-commons-collection