我有两个ArrayList
每个对象都有三个整数。我想找到一种方法来返回两个列表的共同元素。有人知道我该如何实现这一目标吗?
Use Collection#retainAll() https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/Collection.html#retainAll(java.util.Collection).
listA.retainAll(listB);
// listA now contains only the elements which are also contained in listB.
如果您想避免更改受到影响listA
,那么您需要创建一个新的。
List<Integer> common = new ArrayList<>(listA);
common.retainAll(listB);
// common now contains only the elements which are contained in listA and listB.
如果您是流媒体的粉丝,您能做的最好的事情就是Stream#filter() https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/stream/Stream.html#filter(java.util.function.Predicate) on Collection#contains() https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/Collection.html#contains(java.lang.Object)另一个列表中的。
List<Integer> common = listA.stream().filter(listB::contains).toList();
// common now contains only the elements which are contained in listA and listB.
它只慢至少两倍。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)