【问题标题】:Loop through HashMap [duplicate]循环遍历HashMap [重复]
【发布时间】:2018-10-15 01:04:46
【问题描述】:

我正在尝试以字符串为键、我的类的对象为值来循环遍历 HashMap。我希望 rek1 有键“A”和 rek2 键“B”。

这是我的代码:

private Map<String, List<X2Y2>> areaMap = new HashMap<String, List<X2Y2>>();
ArrayList<X2Y2> arrList = new ArrayList<X2Y2>();
X2Y2 rek1 = new X2Y2(1.0,1.0, 2.0, 2.0);
X2Y2 rek2 = new X2Y2(3.0,3.0, 4.0, 4.0);
arrList.add(rek1);
arrList.add(rek2);
areaMap.put("A", arrList);

for (Object key : areaMap.keySet()) {
   String lKey = (String) key;
   List<X2Y2> list = areaMap.get(key);
   Log.i("Worku?", list.toString());
}

class X2Y2(var x1: Double, var y1: Double, var x2: Double, var y2: Double) {}

问题是我只能获取键值,而不是我的 X2Y2 列表。有人有任何提示可以帮助我获得 X2Y2 值吗?

【问题讨论】:

  • 我会使用 Map.Entry> 对其进行迭代
  • 你不能让 rek1 拥有键“A”和 rek2 键“B”,因为它们是列表中的元素,即 HashMap 的值

标签: java android hashmap kotlin


【解决方案1】:

areaMap.get(key); 更改为areaMap.get(lKey);

我确实认为您应该使用条目集进行迭代,以便您可以更轻松地获得值

for (Map.Entry<String, List<X2Y2>> kv : areaMap.entrySet()) {
    System.out.println(kv.getValue());
}

【讨论】:

  • System.out: [io.agilevision.proximity.indoor.X2Y2@802c399, io.agilevision.proximity.indoor.X2Y2@21c165e] 是我得到的输出.. 我只需要循环之后通过列表还是什么?
  • 是的,如果你想打印出这些值或对它们做任何事情,你可以做一个kv.getValue().forEach(System.out::println);
猜你喜欢
  • 1970-01-01
  • 2010-11-07
  • 2018-04-08
  • 2011-10-08
  • 1970-01-01
  • 2019-07-28
  • 2010-12-22
  • 2018-10-16
相关资源
最近更新 更多