Java 变换哈希映射
我有一个Java 变换哈希映射,java,Java,我有一个Map变量。 举例来说: {user0, {Item1, 2.5, Item2, 3.5}} {user1, {Item1, 3.0, Item2, 2.0}} 我希望获得以下输出: {Item1, {user0, 2.5, user1, 3.0}} {Item2, {user0, 3.5, user2, 2.0}} 为此,我编写了以下代码: for(Map.Entry<String, Map<String, Double>> entry : user
Map
变量。举例来说:
{user0, {Item1, 2.5, Item2, 3.5}}
{user1, {Item1, 3.0, Item2, 2.0}}
我希望获得以下输出:
{Item1, {user0, 2.5, user1, 3.0}}
{Item2, {user0, 3.5, user2, 2.0}}
为此,我编写了以下代码:
for(Map.Entry<String, Map<String, Double>> entry : usersMap.entrySet()){
for(Map.Entry<String, Double> ent : entry.getValue().entrySet()){
people.put(entry.getKey(), ent.getValue());
transform.put(ent.getKey(), people);
}
}
你能在这里给我一些帮助吗?试试transform.get(ent.getKey()).put(entry.getKey(),ent.getValue())
您还需要处理NullPointerException
。尝试transform.get(ent.getKey()).put(entry.getKey(),ent.getValue())
您还需要处理
NullPointerException
。在我看来,您只为您的人员地图添加了1个值。试试这个:
for(Map.Entry<String, Map<String, Double>> entry : usersMap.entrySet()){
for(Map.Entry<String, Double> ent : entry.getValue().entrySet()){
people.put(entry.getKey(), ent.getValue());
}
transform.put(ent.getKey(), people);
}
for(Map.Entry:usersMap.entrySet()){
对于(Map.Entry-ent:Entry.getValue().entrySet()){
people.put(entry.getKey(),ent.getValue());
}
transform.put(ent.getKey(),people);
}
在我看来,您只为您的人员地图添加了1个值。试试这个:
for(Map.Entry<String, Map<String, Double>> entry : usersMap.entrySet()){
for(Map.Entry<String, Double> ent : entry.getValue().entrySet()){
people.put(entry.getKey(), ent.getValue());
}
transform.put(ent.getKey(), people);
}
for(Map.Entry:usersMap.entrySet()){
对于(Map.Entry-ent:Entry.getValue().entrySet()){
people.put(entry.getKey(),ent.getValue());
}
transform.put(ent.getKey(),people);
}
您必须为每个项目创建一个新地图
for(Map.Entry<String, Map<String, Double>> entry : usersMap.entrySet()){
for(Map.Entry<String, Double> ent : entry.getValue().entrySet()){
Map<String, Double> people = transform.get(ent.getKey());
if (people == null) {
people = new HashMap<>();
transform.put(ent.getKey(), people);
}
people.put(entry.getKey(), ent.getValue());
}
}
说真的,我花了好几次努力才把代码弄对,因为名字很混乱。但是现在应该是正确的了您必须为每个项目创建一个新地图
for(Map.Entry<String, Map<String, Double>> entry : usersMap.entrySet()){
for(Map.Entry<String, Double> ent : entry.getValue().entrySet()){
Map<String, Double> people = transform.get(ent.getKey());
if (people == null) {
people = new HashMap<>();
transform.put(ent.getKey(), people);
}
people.put(entry.getKey(), ent.getValue());
}
}
说真的,我花了好几次努力才把代码弄对,因为名字很混乱。但是现在应该是正确的您在哪里(以及如何)定义人
变量?您在哪里(以及如何)定义人
变量?