2

Java、メインの外部でハッシュマップを作成する方法はありますが、メインまたは別のメソッドでそれを参照します import java.util.*;

import java.util.Map.Entry;

// Create a hash map 

        HashMap<String, Double> hm = new HashMap<String, Double>();

// Put elements into the map

        hm.put("John Doe", new Double(3434.34)); 
        hm.put("Tom Smith", new Double(123.22)); 
        hm.put("Jane Baker", new Double(1378.00)); 
        hm.put("Todd Hall", new Double(99.22)); 
        hm.put("Ralph Smith", new Double(-19.08));

class HashMapDemo 
{ 

    public static void main(String args[])
    { 
        // Get a set of the entries

        Set<Entry< String, Double> > set = hm.entrySet();

        // Get an iterator

        Iterator<Entry< String, Double> > i = set.iterator();

        // Display elements

        while(i.hasNext())
        { 
            Entry< String, Double > me = i.next(); 
            System.out.print( me.getKey() + ": " ); 
            System.out.println( me.getValue() ); 
        }

        System.out.println();

        // Deposit 1000 into John Doe's account

        double balance = hm.get( "John Doe" ).doubleValue(); 
        hm.put( "John Doe", new Double(balance + 1000) ); 
        System.out.println( "John Doe's new balance: " + hm.get("John Doe"));

    } 
}
4

2 に答える 2

6

問題は、静的メインからインスタンス値にアクセスしようとしていることです。これを修正するには、HashMapを静的にします。

static HashMap<String, Double> hm = new HashMap<String, Double>();

static {
    hm.put("John Doe", new Double(3434.34)); 
    hm.put("Tom Smith", new Double(123.22)); 
    hm.put("Jane Baker", new Double(1378.00)); 
    hm.put("Todd Hall", new Double(99.22)); 
    hm.put("Ralph Smith", new Double(-19.08));
}

これで、この回線はにアクセスできるようになりますhm

Set<Entry< String, Double> > set = hm.entrySet();
于 2012-06-20T23:35:48.167 に答える
2

グリッチに同意しますが、代わりに、ハッシュマップを設定し、getHM()それを返す関数を持つクラスを作成できます。次に、メインで次を作成するだけです。

  • そのクラスのオブジェクト、例えば

    Test test = new Test();

  • 新しい HashMap に getHM() の値を割り当てます。

    HashMap<String, Double> hm = test.getHM();

これはあなたのクラス Test になります

public class Test {
    HashMap<String, Double> hm;

    public Test() {
        hm = new HashMap<String, Double>();
        hm.put("John Doe", new Double(3434.34)); 
        hm.put("Tom Smith", new Double(123.22)); 
        hm.put("Jane Baker", new Double(1378.00)); 
        hm.put("Todd Hall", new Double(99.22)); 
        hm.put("Ralph Smith", new Double(-19.08));
    }

    public HashMap<String, Double> getHM() {
        return hm;
    }
}

ソリューションの選択は要件に依存すると思いますが、それが唯一の問題である場合は、グリッチによって提供されるソリューションがおそらく最も簡単/最良です。

static キーワードを使用すると、オブジェクトのインスタンスを作成しなくても HashMap を取得できます。これはメモリ使用量の点で優れていると思います(ただし、最適化の専門家ではありません...)。

于 2012-06-21T00:01:19.270 に答える