List<Long> listOne=...Some valid values;
List<Long> listTwo=...Some valid values;
List<Long> listThree=new ArrayList<Long>();
List<Long> listFour=new ArrayList<Long>();
for (Long id: ListOne) {
if(!listTwo.contains(id)){
listThree.add(id);
}
}
for (Long id: ListTwo) {
if(!listOne.contains(id)){
listFour.add(id);
}
}
为了提高效率,您可以这样做:
Set<Long> setOne = new HashSet<>(listOne);
Set<Long> setTwo = new HashSet<>(listTwo);
List<Long> listThree = listOne.stream()
.filter(e -> !setTwo.contains(e))
.collect(Collectors.toList());
List<Long> listFour = listTwo.stream()
.filter(e -> !setOne.contains(e))
.collect(Collectors.toList());
这样就避免了m*n
列表长度m
和n
复杂度的问题。
编辑:如果您喜欢没有中间变量(正如@davidxxx所提到的),您可以这样做:
List<Long> listThree = listOne.stream()
.filter(not(new HashSet(listTwo)::contains))
.collect(Collectors.toList());
可能重复: 原始数组与ArrayList 在java中,列表和数组有什么区别?或数组和矢量之间的区别!
我需要使用python找出两个列表之间的差异。这个问题以前在堆栈溢出上被问过很多次,但没有一个提到重复(即和之间的区别是;我需要它是,因为每个数字在我的程序中都很重要)。 我尝试过使用numpy的setdiff1d,但它无法满足上述标准 如上所述,这只说明同一项是否在列表中,而不是它在该列表中的次数。我还可以使用其他功能吗?
问题内容: 我有两个列表,其中包含许多相同的项目,包括重复的项目。我想检查第一个列表中的哪些项不在第二个列表中。例如,我可能有一个这样的列表: 还有一个像这样的列表: 比较这两个列表,我想返回第三个列表,如下所示: 我目前正在使用一些我之前确定的糟糕代码,我可以肯定它甚至无法正常工作,如下所示。 我怎样才能更好地完成这项任务? 问题答案: 您没有指定订单是否重要。如果没有,则可以在> = Pyth
问题内容: 我在Python中有两个列表,如下所示: 我需要用第一个列表中的项目创建第二个列表,而第二个列表中没有这些项目。从示例中,我必须得到: 有没有循环和检查的快速方法吗? 问题答案: 当心 你可能期望/希望它等于的位置。如果你想作为答案,则需要使用
问题内容: 给定一个数字列表,人们如何发现第()个元素与其第()个元素之间的差异? 使用表达式还是列表理解更好? 例如: 给定一个列表,我们的目标是要找到一个列表,因为,等等。 问题答案:
我想找出numpy数组中所有值之间的差异,并将其附加到一个新列表中。 也就是说,对于一个的每个值