如何获取具有三个值的哈希映射值

2022-09-01 11:19:15

如果我有一个带有这样键的哈希映射:和这样的值(示例):[pubDate, title, link]

[Thu, 03 Jan 2013 21:50:02 +0100, Transferts - YBX : ''Je change de dimension'', http://www.link.fr/info/link_informations.html]

我可以检索链接吗?法典:http://www.link.fr/info/link_informations.html

    for (int i = 0; i < nl.getLength(); i++) {
                    // creating new HashMap
                    map = new HashMap<String, String>();
                    Element e = (Element) nl.item(i);
                    // adding each child node to HashMap key => value
                    map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
                    map.put(KEY_LINK, parser.getValue(e, KEY_LINK));

                    map.put(KEY_DATE, parser.getValue(e, KEY_DATE));
                    //map.put(KEY_DESC, parser.getValue(e, KEY_DESC));

                    // adding HashList to ArrayList
                    menuItems.add(map);
 }

答案 1

我只是遇到了同样的问题,并决定将我的密钥映射到条目。这允许使用映射提供的相同索引功能,同时具有与键关联的多个属性。我认为这是一个更整洁的解决方案,可以创建一个单独的类或嵌套映射。

Map<String, Entry<Action, Boolean>> actionMap = new HashMap<String, Entry<Action, Boolean>>();

actionMap.put("action_name", new SimpleEntry(action, true));

要稍后使用这些数据,请执行以下操作:

Entry<Action, Boolean> actionMapEntry = actionMap.get("action_name");

if(actionMapEntry.value()) actionMapEntry.key().applyAction();

我个人使用这个是命名函数的映射。按名称选择函数后,将运行该函数,布尔值将确定处理中是否需要清理。


答案 2

创建一个对象,该对象将键的所有三个子项保存为属性。确保正确实施。equalshashCode

public class MyKey {
  public MyKey(String subkey1, String subkey2, String subkey3) {
    ...
  }
}

使用此类对象作为地图的键:

Map<MyKey, String> myMap = ....;
myMap.get(new MyKey("Thu", "03 Jan 2013 21:50:02 +0100", "Transferts - YBX"));

玩得愉快!