Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除重复项CollectionUtils.collate方法_Java_Apache Commons Collection - Fatal编程技术网

Java 删除重复项CollectionUtils.collate方法

Java 删除重复项CollectionUtils.collate方法,java,apache-commons-collection,Java,Apache Commons Collection,我试图通过使用CollectionUtils.collate方法找到两个集合的并集。此方法来自org.apache.commons.collections4包 以下是代码部分: Collection<String> tokensUnion2 = CollectionUtils.collate( Arrays.asList(new String[]{"my", "sentence", "test", "for", "testing"}), Arrays.asList(

我试图通过使用CollectionUtils.collate方法找到两个集合的并集。此方法来自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);
如您所见,生成的集合包含重复项,即使CollectionUtils.collate的第三个参数指示我不想要重复项

此外,字符串重复句已被删除,但测试仍然存在

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


谢谢。

collate方法需要两个已排序的集合。CollectionUtils#collate的java文档说:将两个已排序的集合a和b合并到一个单独的已排序列表中,以便保留元素的自然顺序

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

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);
我希望这有帮助

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]