Java 8 两个列表的交集<;int[]>;java流的类型 List bigList=new ArrayList(); List smallList=new ArrayList();

Java 8 两个列表的交集<;int[]>;java流的类型 List bigList=new ArrayList(); List smallList=new ArrayList();,java-8,java-stream,Java 8,Java Stream,我需要生成一个int[]类型的列表,其中包含两个列表中的公共数组。(值应该相等,而不是使用contains() 如何在java streams中高效地实现它???如果它真的必须是一个流解决方案,这里有一个: List<int[]> bigList = new ArrayList<int[]>(); List<int[]> smallList = new ArrayList<int[]>(); 请注意,对于集合操作,不应使用List。源和结果排序的

我需要生成一个int[]类型的列表,其中包含两个列表中的公共数组。(值应该相等,而不是使用contains()


如何在java streams中高效地实现它???

如果它真的必须是一个流解决方案,这里有一个:

List<int[]> bigList = new ArrayList<int[]>();
List<int[]> smallList = new ArrayList<int[]>();

请注意,对于集合操作,不应使用
List
。源和结果排序的语义以及如何处理源列表中的重复项都未指定。

我不明白您为什么要谈论流。这里没有流,只有列表和数组。当然这里没有流,我需要这个问题的流实现。为什么?通常,你需要一个解决方案,也许是一个有效的解决方案。但是,坚持让streams参与解决方案的原因是什么?顺便说一下,当你想要一个交叉点时,你应该考虑使用<代码> SET/COD>否则,您将定义任务的更多方面。如何处理源列表中的重复项?您希望从结果列表中得到哪种顺序?谢谢@Holger,复制和排序没有提到,因为复制已经得到处理,排序也不重要。
List<int[]> intersection=bigList.stream().map(IntBuffer::wrap)
    .filter(b->smallList.stream().map(IntBuffer::wrap).anyMatch(b::equals))
    .map(IntBuffer::array)
    .collect(Collectors.toList());
Set<IntBuffer> bigSet=bigList.stream().map(IntBuffer::wrap).collect(Collectors.toSet());
List<int[]> intersection=smallList.stream().map(IntBuffer::wrap)
     .filter(bigSet::contains).map(IntBuffer::array).collect(Collectors.toList());