【问题标题】:Get key value pair from Map从 Map 中获取键值对
【发布时间】:2015-02-13 22:06:18
【问题描述】:

我有这段代码来检索地图的键值对:

countries = BeneficiaryJSONParser.parseCountriesFeed(result);
for(Map.Entry<String, Object> entry: countries.entrySet()) {
    System.out.println(entry.getKey() + " : " + entry.getValue());
}

输出

data : [{234=United Arab Emirates, 103=India, 210=Sri Lanka, 235=United Kingdom, 216=Switzerland, 200=Singapore, 76=France}]
status : 200
code : 1

我想将数据作为具有键和值的数组获取。因为,我想把那些键值对放进去,

final MyData items[] = new MyData[3];
items[0] = new MyData( "234","United Arab Emirates" );
items[1] = new MyData( "103","India" );
items[2] = new MyData( "210","Sri Lanka" );
.
.
. 

【问题讨论】:

  • 您使用的是什么 JSON 库?为什么不将其反序列化为 POJO?
  • @itrollin98 :实际上问题不是迭代Map 中的所有条目。这是我需要迭代 data 的东西(在输出中描述)

标签: java arrays json hashmap


【解决方案1】:

您只需要将每个条目转换为 MyData:

List<MyData> data = new ArrayList<> ();
for (Map.Entry<String, Object> e: countries.entrySet()) {
  data.add(new MyData(e.getKey(), String.valueOf(e.getValue());
}

final MyData[] items = data.toArray(new MyData[0]);

或者使用流:

final MyData[] items = countries.entrySet().stream()
                        .map(e -> new MyData(e.getKey(), String.valueOf(e.getValue()))
                        .toArray(MyData[]::new);

【讨论】:

  • 当我尝试使用System.out.println(Arrays.toString(items)); 时,它给了我[data, status, code] 我需要data 对象中的国家/地区列表
  • 我不确定我是否理解我建议的解决方案未涵盖的您想要的内容。
猜你喜欢
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多