gpt4 book ai didi

java - 在java中查找和替换重复项

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:48 27 4
gpt4 key购买 nike

所以,我是java新手。

我有一个字符串数组列表..所以..这个数组看起来像:

[ "foo 123", "bar 124", "foobar 124","foo 125"]

我想要的是删除foo 123..

为什么..

因为 foo 重复了两次..并且我想保留计数最大的那个(在键旁边)..

我的方法有点复杂..

维护带有键和计数的 HashMap 。如果键存在..检查值,如果值更大则替换条目?

我觉得这是解决这个问题的笨拙方法..有没有一种好方法可以基本上消除此列表的重复数据?谢谢

最佳答案

您的方法非常简单 - 事实上,它是您可以拥有的渐进最快的方法,因为它在时间和空间上都是O(N)

实现也非常简单。使用 LinkedHashMap 保留键的插入顺序。

String[] data = new String[] {"foo 123", "bar 124", "foobar 124","foo 125"};
Map<String,Integer> counts = new LinkedHashMap<String,Integer>();
for (String s : data) {
String[] tok = s.split(" ");
Integer count = Integer.valueOf(tok[1]);
if (!counts.containsKey(tok[0]) || counts.get(tok[0]) < count) {
counts.put(tok[0], count);
}
}
for (Map.Entry<String,Integer> e : counts.entrySet()) {
System.out.println(e.getKey() + " " +e.getValue());
}

Demo on ideone .

关于java - 在java中查找和替换重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20110941/

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