7

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)

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

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

私の問題は、名前と強度を含むリスト部分を取得し、強度部分を更新することです。これを行う実行可能な方法はありますか?別のデータ構造を検討する必要がありますか? 助けてください。

4

3 に答える 3

4

(名前、強度) タプルのクラスを作成するのがおそらく最も簡単です。

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

必要に応じて、ゲッター、セッター、およびコンストラクターを追加します。

次に、マップで新しいクラスを使用できます。

Map<Integer, NameStrength> nodesMap = new HashMap<Integer, NameStrength>();

Java 5 以降では、次のように繰り返すことができます。

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

またはこのように:

for (Entry<Integer, NameStrength> entry : nodesMap.entrySet()) {}
于 2009-07-01T23:31:47.863 に答える
3

まあ、常にjythonがあります。これは、この記事から少し抜粋したもので、python/java を並べて表示した優れたビューを提供します。

Java のコレクション クラスに類似した Jython は、コア言語により緊密に統合されているため、より簡潔な説明と便利な機能が可能になります。たとえば、Java コードの違いに注目してください。

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]


編集: put() を使用して値を置き換えるだけの何が問題になっていますか?

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);
    }
}
于 2009-07-01T23:28:48.710 に答える
1

Java には、組み込みのタプルに相当するものはありません。それを模倣するには、2 つを一緒にカプセル化するクラスを作成する必要があります。

于 2009-07-01T23:28:26.870 に答える