gpt4 book ai didi

java - 删除重复项 CollectionUtils.collat​​e 方法

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

我正在尝试使用 CollectionUtils.collat​​e 方法查找两个集合的并集。该方法来自包 org.apache.commons.collections4

这是代码部分:

Collection<String> tokensUnion2 = CollectionUtils.collate(
Arrays.asList(new String[]{"my", "sentence", "test", "for", "testing"}),
Arrays.asList(new String[]{"my", "sentence", "test", "is", "this"}),
false);

结果集合如下:

[my, sentence, test, for, test, is, testing, this]

如您所见,生成的集合包含重复项,即使 CollectionUtils.collat​​e 的第三个参数表明我不想要重复项。

另外,字符串重复的句子已被消除,但测试仍然存在。

我可以通过简单地将生成的集合放入 HashSet 中来解决此问题,但我想知道我做错了什么。

谢谢。

最佳答案

collat​​e 方法需要两个排序的集合。 CollectionUtils#collat​​e 的 java 文档说:将两个已排序的 Collections(a 和 b)合并为一个已排序的 List,以便保留元素的自然顺序。

在您的示例中,作为参数提供的两个列表未排序。如果您修改代码以对列表进行排序

List<String> list1 = Arrays.asList(new String[] { "my", "sentence", "test", "for", "testing" });
List<String> list2 = Arrays.asList(new String[] { "my", "sentence", "test", "is", "this" });

Collections.sort(list1);
Collections.sort(list2);

Collection<String> tokensUnion2 = CollectionUtils.collate(list1, list2, false);

这将返回一个排序后的集合,其中没有重复项

[for, is, my, sentence, test, testing, this]

我希望这会有所帮助。

关于java - 删除重复项 CollectionUtils.collat​​e 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24285071/

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