java - 如何实现一个以数组列表为键的Map

标签 java

我有一个 HashMap,其中 ArrayList 作为键,值作为 Integer,如何从特定键获取值。

Map< List<Object>,Integer> propositionMap=new HashMap<List<Object>,Integer>();  

my key are:[Brand, ID], [Launch, ID], [Model, ID], [Brand, UserModelNoMatch], [ProducerPrice, UserModelMatch], [ProducerPrice, ID]]
my values are:[3, 5, 4, 2, 1, 6]

在我的程序中,我需要多次在不同的地方找到特定键的特定值。我不想每次都使用 for 循环来获取值。 我该怎么做?

最佳答案

抛开这是一个坏主意(如评论中所述),您不需要做任何特别的事情:

List<Object> list = new ArrayList<Object>();
// add objects to list

Map<List<Object>,Integer> propositionMap = new HashMap<List<Object>,Integer>();  
propositionMap.put(list, 1);
Integer valueForList = propositionMap.get(list); // returns 1

独立构造列表时可以获得相同的值:

List<Object> list2 = new ArrayList<Object>();
// add the same objects (by equals and by hashcode) to list2 as to list

Integer valueForList = propositionMap.get(list2); // returns 1

但需要注意的是,在将列表用作 map 中的键后,不要更改列表!

list.add(new Object());
Integer valueForList = propositionMap.get(list); // likely returns null

同样,这很可能是一个坏主意。

关于java - 如何实现一个以数组列表为键的Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18077933/

相关文章:

java - 用于测量代码行的 Eclipse 插件

java - 尝试推送到 Mercurial 仓库但无法推送

java - 如何正确使用回调?

java - 如何从 Java 代码生成 UML 图(尤其是序列图)?

java - Java 游戏中的滚动 JFrame

java - 使用扫描仪和异常读取文本文件中的整数并存储到数组

java - 大型项目中监听器类的作用是什么

javascript - 如何将 d3 GWT 包装器添加到 vaadin?

java - JTabbedPane 中具有相等(恒定)宽度的选项卡

java - 是否可以为 POI lib 创建的 Word 文档定义 xml 架构?