gpt4 book ai didi

java - 如果我想从 Set 中删除 ("one", 1) ,我应该写什么作为 Set remove() 方法的参数

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

我正在学习 Java tutorial oracle map 界面并且遇到过如下的说法:

The Collection views support element removal in all its many forms — remove, removeAll, retainAll, and clear operations, as well as the Iterator.remove operation.

所以我想出了以下代码并尝试使用 Collection.remove() 方法来删​​除其中一个元素,即 ("one", 1),来自设置 sme1。但我不太确定如果我想从 中删除 ("one", 1) ,我应该写什么作为 sme1.remove() 方法的参数>sme1。有人可以帮我吗?预先感谢您的帮助!

Map<String, Integer> m1 = new LinkedHashMap<>();
m1.put("one", 1);
m1.put("two", 2);
m1.put("three", 3);

Set<Map.Entry<String, Integer>> sme1 = m1.entrySet();
System.out.println(sme1);

sme1.remove(?);//what should I write as the argument to sme1.remove() method if I want to remove ("one", 1) from sme1.

System.out.println(m1);

最佳答案

不要从 EntrySet 中删除,而是从 map 本身中删除,如下所示:

Map<String, Integer> m1 = new LinkedHashMap<>();
m1.put("one", 1);
m1.put("two", 2);
m1.put("three", 3);

System.out.println(m1);

m1.remove("one");

System.out.println(m1);

您正在告诉 map 删除带有 key="one"的元素。

与获取 Map 中所有 Map.EntrySet 并调用 相比,这是一个更简洁的解决方案Map.Entry.remove()

正如 Java 教程所述,所有 Collection 都支持 remove() 操作。在这种情况下,如果您想使用 Map.EntrySet 进行删除,那么您需要告诉 Set 哪个 >Map.Entry 删除。 remove() 操作对 Collection 中的每个条目调用 equals() 方法。因此,您需要向其传递一个 Map.Entry 来与其他所有 Map.Entry 进行比较,以便找到要删除的正确元素。

这样做看起来像:

Map<String, Integer> m1 = new LinkedHashMap<>();
m1.put("one", 1);
m1.put("two", 2);
m1.put("three", 3);

Set<Map.Entry<String, Integer>> sme1 = m1.entrySet();
System.out.println(sme1);

sme1.remove(new AbstractMap.SimpleEntry<String, Integer>("one",1));

System.out.println(sme1);

远没有那么“漂亮”!

关于java - 如果我想从 Set 中删除 ("one", 1) ,我应该写什么作为 Set remove() 方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36049730/

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