简体   繁体   English

从 Java 中的 Map 中删除 Class object 密钥

[英]Removal of Class object key from Map in Java

I have a Map with a key/value pair made up of a string and class object Block .我有一个 Map ,其键/值对由字符串和 class object Block组成。 The remove(Object key, Object value) method fails to actually remove the object specified. remove(Object key, Object value)方法无法真正删除指定的 object。

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

My IDE tips me off that my entry in the Object value data field " may not contain values of type 'Block' " What fundamental concept am I missing about Java and passing values in methods?我的 IDE 提示我,我在Object value数据字段中的条目“可能不包含‘块’类型的值”关于 ZD52387880E1EA22817A71ZD37592138 中的方法和传递值,我缺少什么基本概念? I have only been coding in Java for a short period.我只在 Java 中编码了很短的时间。

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

I have a Map with a key/value pair made up of a string and class object Block.我有一个 Map,其键/值对由字符串和 class object 块组成。

No, you don't.不,你没有。

You declared a mapping of String to a collection of objects of type Block .您声明了StringBlock类型对象集合的映射。 Specifically an ArrayList collection.特别是ArrayList集合。

So the compiler refuses your attempt to remove a string-to-block entry because there are no such entries.因此编译器拒绝您删除字符串到块条目的尝试,因为没有这样的条目。 You have only string-to-list-of-blocks entries in your Map .您的Map中只有 string-to-list-of-blocks 条目。

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

A mapping of string to block would look like this:字符串到块的映射如下所示:

Map< String, Block > 
stockInfo.remove(symbolCode, (stockInfo.get(symbolCode)).get(0));

What do you want to remove?你想删除什么? if you have three block objects, eg:如果您有三个块对象,例如:

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);

what is in your map?你的 map 里有什么? like this:像这样:

"12" ---> {block1, block2}; "12" ---> {block1, block2}; "23" ---> {block2, block3}; "23" ---> {block2, block3};

you want to delete the object block1 with the key "12"?你想用“12”键删除 object block1 吗?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM