2009-07-01 8 views
6

私は、Pythonコードを同等のJavaコードに変換する必要があります。 Pythonは、多くのショートカット機能を提供することにより、開発者にとって非常に簡単です。しかし今、私はそれをJavaに移行する必要があります。私はjavaのdictオブジェクトに相当するのだろうかと思っていましたか?私はHashMapを使用しようとしましたが、人生は地獄です。初心者の方はこれを考慮してください。python dictオブジェクトをjavaに相当するオブジェクトに変換する方法は?

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

これをJavaに変換するにはどうすればいいですか?私はHashMapのオブジェクトを使用手始めに 、

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

私の問題は、強さの一部を更新し、その後名前&強&が含まれているリストの一部を得ることにあります。これを実現する方法はありますか?いくつかの異なるデータ構造を考慮する必要がありますか?助けてください。

答えて

4

それはちょうど(名前、強さ)のタプルのためのクラスを作成するために、おそらく最も簡単です:

class NameStrength { 
    public String name; 
    public String strength; 
} 

はゲッター、セッターとAを追加します。適切な場合はコンストラクタ。あなたのマップに新しいクラスを使用することができます

その後:

for (NameStrength nameStrength : nodesMap.values()) {} 

またはこのような:

for (Entry<Integer, NameStrength> entry : nodesMap.entrySet()) {} 

のJava 5で
Map<Integer, NameStrength> nodesMap = new HashMap<Integer, NameStrength>(); 

とアップ、あなたは次のように繰り返すことができます

+0

非常に役立つthats。私はちょうどよりサスクインチのアプローチを得ることを望んでいた。 – Chantz

+5

ああ、残念ながら、簡潔さはJavaの強みの一つではありません... – jqno

1

Javaには組み込みタプルと同等のものはありません。あなたはそれを模倣するために2つを一緒にカプセル化したクラスを作成する必要があります。

2

よくあるのは、常にjythonです。 は、ここでJavaの コレクションクラスにパイソン/ javaの

Jythonの類似体の側面図で良い面を提供していますthis articleから少しだ はるかに緊密により簡潔 を考慮して、コア 言語に統合されています説明と便利な機能。

map = new HashMap(); 
map.put("one",new Integer(1)); 
map.put("two",new Integer(2)); 
map.put("three",new Integer(3)); 

System.out.println(map.get("one")); 

list = new LinkedList(); 
list.add(new Integer(1)); 
list.add(new Integer(2)); 
list.add(new Integer(3)); 

とJythonのコード:

map = {"one":1,"two":2,"three":3} 
print map ["one"] 
list = [1, 2, 3] 


編集:ちょうどプットを使用して間違っているものを()の値を置き換えるために、例えば は、Javaコードの違い に気付きます?

map.put(key,new_value); 

は、ここでは、小さなプログラム例です:

static public void main(String[] args){ 
    HashMap<String,Integer> map = new HashMap<String,Integer>(); 
    //name, age 
    map.put("billy", 21); 
    map.put("bobby", 19); 
    year(map); 
    for(String i: map.keySet()){ 
     System.out.println(i+ " " + map.get(i).toString()); 
    } 
} 
// a year has passed 
static void year(HashMap<String,Integer> m){ 
    for(String k: m.keySet()){ 
     m.put(k, m.get(k)+1); 
    } 
} 
+0

チップのおかげで。しかし、いくつかの制限のためにJythonを使用することはできません。ありがとうございます。 – Chantz

関連する問題