gpt4 book ai didi

java - 是否有一个 LinkedHashSet/Map 等效项,并为插入的重复项保留顺序?

转载 作者:行者123 更新时间:2023-12-01 12:15:42 24 4
gpt4 key购买 nike

我想知道两件事。

1) HashSet 对添加的重复值有何作用?我相信它取代了值(value)?如果是这样,那么 LinkedHashSet 又如何呢?我很确定它不会改变顺序,那么它仍然会替换值吗? (为什么会这样?)

2) 如果我想使用不允许重复的有序集合,但会用重复值替换现有值,从而重新排序位置,该怎么办?IE。它就像一个 LinkedHashSet,只不过添加的重复值将被替换并更新它们的位置。有没有一个集合可以做到这一点?或者我必须自己写?我不想自己写!

最佳答案

1) 将重复项添加到 Set 中不会执行任何操作(它立即返回 false,并且 Set 的内容不受影响),无论具体实现如何,无论是 HashSet、TreeSet 还是 LinkedHashSet。

2) 查看 LinkedHashMap,它可能是最接近您想要的。它的构造函数有一个 boolean 参数,可让您指定是否希望它使用“插入顺序”(假)或“访问顺序”。前者与 LinkedHashSet 相同,后者会在您重新插入 key 时将 key 向上“凸出”,如果您查找它,也会:

Map<String, Integer> map = new LinkedHashMap(10, 0.75, true);
map.put("foo", 1); map.put("bar", 2);
System.out.println(map.keySet().iterator().next()); // prints "bar"
map.put("foo", 1);
System.out.println(map.keySet().iterator().next()); // prints "foo"
map.get("bar");
System.out.println(map.keySet().iterator().next()); // prints "bar"

关于java - 是否有一个 LinkedHashSet/Map 等效项,并为插入的重复项保留顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27020447/

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