从Java的Map中删除Class对象的键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Java的Map中删除Class对象的键相关的知识,希望对你有一定的参考价值。

我有一个Map,键/值对由字符串和类对象Block组成。 remove(Object key, Object value)方法实际上无法删除指定的对象。

private static Map<String, ArrayList<Block>> stockInfo = new LinkedHashMap<>();

我的IDE向我提示,我在Object value数据字段中的输入“ 可能不包含'Block'类型的值“我缺少关于Java以及在方法中传递值的哪个基本概念?我只是用Java编写了短时间代码。

stockInfo.remove(symbolCode, (stockInfo.get(symbolCode)).get(0));

答案

我有一个Map,键/值对由字符串和类对象Block组成。

不,你没有。

您声明了String到类型为Block的对象的collection的映射。特别是ArrayList集合。

所以编译器拒绝您尝试删除字符串到块的条目,因为没有这样的条目。您的Map中只有一个“阻止列表的字符串”条目。

Map<String, ArrayList<Block>> stockInfo = new LinkedHashMap<>();

字符串到块的映射看起来像这样:

Map< String, Block > 
另一答案
stockInfo.remove(symbolCode, (stockInfo.get(symbolCode)).get(0));

您要删除什么?如果您有三个块对象,例如:

Block block1 = new Block(); 
Block block2 = new Block();
Block block3 = new Block();
List list1 = new ArrayList();
list1.add(block1);
list1.add(block2);
List list2 = new ArrayList();
list2.add(block2);
list2.add(block3);

您的地图上有什么?像这样:

“” 12 ---> {block1,block2};“ 23” ---> {block2,block3};

您要使用键“ 12”删除对象block1吗?

以上是关于从Java的Map中删除Class对象的键的主要内容,如果未能解决你的问题,请参考以下文章

在map中怎么删除一个对象

java map获取到的值转为User对象

Java中的Map集合

map 中的键值都可以是啥类型的啊

java - 如何在java中的map上保留两个迭代器并在没有ConcurrentModificationException的情况下删除它们之间的键

Java中对象作map的键,put的时不能覆盖原值