我正在从Java教程oracle学习Map接口,并遇到以下语句:
Collection视图支持以多种形式删除元素-remove,removeAll,retainAll和clear操作以及Iterator.remove操作。
所以,我想出了下面的代码,并试图使用Collection.remove()
方法要删除的元素,即一个("one", 1)
从Set sme1
。但是我不确定sme1.remove()
如果要从中删除("one", 1)
,应该写什么作为method的参数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<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);
您正在告诉地图删除键为“ one”的元素。
这是相比于得到一个更清洁的解决方案Set
所有Map.Entry
的在Map
和调用Map.Entry.remove()
正如Java教程所述,所有都Collection
支持该remove()
操作。在这种情况下,如果你想使用做了删除Set
的Map.Entry
,那么你需要告诉Set
它Map.Entry
删除。这些remove()
操作会equals()
在中的每个条目上调用方法Collection
。因此,您需要将其传递给aMap.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);
远不及“漂亮”!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句