两个List <int []>类型的交集由java流

时间:2015-07-16 10:38:40

标签: java-8 java-stream

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

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

如何在java流中高效地完成?

1 个答案:

答案 0 :(得分:4)

如果它真的必须是一个流解决方案,那么就是一个:

standardUserDefaults

但是通过执行bigList.size()×smallList.size()操作并不是真正有效。因此,强烈建议不要动态地执行所有操作,而是采用中间NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"MySuiteName"];存储:

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用于设置操作。未明确指定源和结果排序的语义以及如何处理源列表中的重复项。