我是Java新手,仍处于学习阶段。我有一个结构
Map<Long, Map<String, Data>> mapData
Data
有 2 个字段time
,distance
并且Map
有一个时间,这是一个Long
字段,map
并且Identifier
结构Data
看起来像这样
{190001919 = {[1= [data1], 2=[data2], 3=[data3]},
190001920={[1=[data4], 2=[data5], 3=[data6]},
1900019121= {[1=[data7], 2=[data8], 3=[data9]}}
然后将其转换为地图 -Map<String,List<Data>> mpData
使用
idenifier
askey
和values
as 标识符相同的值。
喜欢
{1= [data1,data4,data7], 2= [data2,data5,data8],3= [data3,data6,data9]}
有人可以帮我吗?更新:使用下面的代码,我得到
{1= [data7,data7,data7], 2= [data8,data8,data8],3= [data9,data9,data9]}
代替
{1= [data1,data4,data7], 2= [data2,data5,data8],3= [data3,data6,data9]}
代码:
public static Map<Long, Map<String, Data>> listData;
public static Map<String, List<Data>> mapData;
public convertMapData(Map<Long, Map<String, Data>> array) {
listData = new HashMap();
listData = array;
mapData = new HashMap<>();
Iterator it = listData.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Long, Map<String, Data>> pairs = (Map.Entry) it
.next();
Long keyValue = pairs.getKey();
Map inter = pairs.getValue();
Iterator it2 = inter.entrySet().iterator();
while (it2.hasNext()) {
Map.Entry<String, Data> pairs_2 = (Map.Entry) it2
.next();
String identifierK = pairs_2.getKey();
Data resultV = pairs_2.getValue();
if (!(mapData.containsKey(identifierK))) {
mapData.put(identifierK, new ArrayList<Data>());
}
mapData.get(identifierK).add(resultV);
}
}
}