gpt4 book ai didi

arrays - 使用流查找两个相似的数组

转载 作者:行者123 更新时间:2023-12-03 01:16:16 25 4
gpt4 key购买 nike

假设我有对象列表,每个对象都包含自己的字符串数组。我需要找到给定数组中重复次数最多的对象。我可以简单地通过使用一些 for 循环、if 和计数器来实现这一点,但我想使用 Java 8 流来实现这一点。我真的希望这是可能的。

@Test
public void test() {

String mainArray[] = {"a", "b", "c"};
List<ElementsList> elems = new ArrayList<>();

ElementsList a = new ElementsList(new String[]{"d", "e", "a"});
ElementsList b = new ElementsList(new String[]{"b", "c", "d"});

elems.add(a);
elems.add(b);

List<ElementsList> result = elems.stream()...;

assertTrue(result.contains(b));
}

private class ElementsList {

private String elements[];

private ElementsList(String elements[]) {
this.elements = elements;
}

public String[] getElements() {
return elements;
}
}

最佳答案

我可以想到这个例子:

List<String> main = Arrays.asList(mainArray);
Stream.of(a, b)
.map(x -> new AbstractMap.SimpleEntry<>(x, new ArrayList<>(new ArrayList<>(Arrays.asList(x.elements)))))
.map(entry -> {
entry.getValue().removeAll(main);
entry.setValue(entry.getValue());
return entry;
})
.sorted(Comparator.comparing(e -> e.getValue().size()))
.map(Entry::getKey)
.forEach(el -> System.out.println(Arrays.toString(el.elements)));

基本上将所有元素放入可变的List中,然后对mainArray中的元素进行removeAll,并根据大小对结果进行排序其余的。

关于arrays - 使用流查找两个相似的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46053038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com