gpt4 book ai didi

java - 如何从 Java 列表中删除所有重复的字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:45:04 25 4
gpt4 key购买 nike

对于给定的列表,说 [ "a", "a", "b", "c", "c"] 我需要 [ "b"](仅非重复元素)作为输出。请注意,这与使用作业的 Set 接口(interface)不同...

我用 Java 编写了以下代码来执行此操作:

void unique(List<String> list) {
Collections.sort(list);
List<String> dup = new ArrayList<>();
int i = 0, j = 0;

for (String e : list) {
i = list.indexOf(e);
j = list.lastIndexOf(e);

if (i != j && !dup.contains(e)) {
dup.add(e);
}
}

list.removeAll(dup);
}

有效...但是对于大小为 85320 的列表,几分钟后结束!

最佳答案

你最好的表现是搭配:

    String[] xs = { "a", "a", "b", "c", "c" };

Set<String> singles = new TreeSet<>();
Set<String> multiples = new TreeSet<>();

for (String x : xs) {
if(!multiples.contains(x)){
if(singles.contains(x)){
singles.remove(x);
multiples.add(x);
}else{
singles.add(x);
}
}
}

这是单次传递,插入、删除和包含是 log(n)。

关于java - 如何从 Java 列表中删除所有重复的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43216343/

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