如何将python dict对象转换为java等效对象?

Cha*_*ntz 6 python java dictionary hashmap

我需要将python代码转换为等效的java代码.Python通过提供许多快捷功能,使开发人员的生活变得非常轻松.但是现在我需要将它迁移到Java.我想知道java中dict对象的等价物是什么?我尝试过使用HashMap,但生活很糟糕.首先考虑一下,

#  Nodes is a dictionary -> Key : (Name, Strength)
for node, (name, strength) in nodes.items():
    nodes[node] = (name, new_strength)
Run Code Online (Sandbox Code Playgroud)

那么如何将其转换为Java呢?对于初学者我使用HashMap对象,所以,

Map<Integer, List> nodesMap = new HashMap<Integer,List>();
/* For iterating over the map */
Iterator updateNodeStrengthIterator = nodesMap.entrySet().iterator(); 
while(updateNodeStrengthIterator.hasNext()){ }    
Run Code Online (Sandbox Code Playgroud)

我的问题是获取包含名称和强度的List部分,然后更新Strength部分.有没有可行的方法呢?我应该考虑一些不同的数据结构吗?请帮忙.

jqn*_*qno 4

为(名称,强度)元组创建一个类可能是最简单的:

class NameStrength {
    public String name;
    public String strength;
}
Run Code Online (Sandbox Code Playgroud)

如果合适的话,添加 getter、setter 和构造函数。

然后您可以在地图中使用新类:

Map<Integer, NameStrength> nodesMap = new HashMap<Integer, NameStrength>();
Run Code Online (Sandbox Code Playgroud)

在 Java 5 及更高版本中,您可以像这样进行迭代:

for (NameStrength nameStrength : nodesMap.values()) {}
Run Code Online (Sandbox Code Playgroud)

或者像这样:

for (Entry<Integer, NameStrength> entry : nodesMap.entrySet()) {}
Run Code Online (Sandbox Code Playgroud)

  • 嗯,不幸的是,简洁并不是 Java 的优势之一...... (5认同)