从Map中获取Java中特定Key的Long值列表

时间:2017-11-06 21:13:22

标签: java

我有一张地图:message 内容是:

Map<String, Object> data

我想在长列表中存储{"id_list":["2147041","2155271","2155281"], "remoteHost":"127.0.0.1", "userId":"user", "agencyId":1} 的所有值 它将是:

Key: id_list 有没有办法做到这一点? 我有:

list:[2147041,2155271,2155281]

3 个答案:

答案 0 :(得分:3)

new ArrayList<Long>(Arrays.asList(data.get("id_list")));

假设这是hashMap中的数组。否则你必须将它作为(Iterable<String>)data.get("id_list");投射并逐个添加每个字符串。

答案 1 :(得分:3)

看起来id_list集合中的值是String个对象,因此您应该能够通过执行转换的循环执行此操作:

Iterable<String> idStrings = (Iterable<String>)data.get("id_list");
List<Long> list = new ArrayList<Long>();
for (String id : idStrings) {
    list.add(Long.valueOf(id));
}

答案 2 :(得分:0)

您可以使用Arrays.asList从该数组中实例化

List<Long> list = Arrays.asList(data.get("id_list"));

或者如果你想要一个新的ArrayList而不是一个通用的List

List<Long> list = new ArrayList<Long>(Arrays.asList(data.get("id_list")));