2016-10-04 83 views
0

以下是我的開始代碼。我在HashMaps上學到了一些,創建並使用它們。但是我在創建我已經構建的HashMap的副本時遇到問題。我可以重新創建一個新的地圖,但這個想法是建立一個地圖的一些Keys值,但是從另一個方法來看。我的方法都是公開的。我在Class中創建了一個私有myMap。但是當我嘗試以另一種方法訪問myMap時,我得到的最多是一個空{}。偶爾我會得到'null',但我至少知道如何從nullto到{}。我只想要.getKey ...來獲取HashMap數據。HashMap Object〜myMap是在公共Java方法中創建的

希望這個很清楚嗎?如果不會嘗試發送更多。

public class CodonCount { 
    private HashMap<String,Integer> myMap = new HashMap<String,Integer>(); 

public CodonCount() { 
System.out.println("myMap (beginning of Constructor) = " + myMap); 
    } 

public HashMap buildCodonMap(int start, String dna) { 
System.out.println("myMap (beginning of buildCodonMap) = " + myMap);  
HashMap<String,Integer> myMap = new HashMap<String,Integer>(); 

回答

1

正如你已經有myMap聲明爲類變量,如果你這樣做

public HashMap buildCodonMap(int start, String dna) { 
    System.out.println("myMap (beginning of buildCodonMap) = " + myMap);  
    HashMap<String,Integer> myMap = new HashMap<String,Integer>(); 
    .... 
} 

您要重新聲明myMap

嘗試

public HashMap buildCodonMap(int start, String dna) { 
    System.out.println("myMap (beginning of buildCodonMap) = " + myMap);  
    myMap = new HashMap<String,Integer>(); 
    .... 
} 
+0

可怕的,你是輝煌。現在我不需要myMap = new HashMap ,因爲我的問題是我試圖「過度」,我必須觀察自己。 (即如果你曾經觀看過情景喜劇「中間人」,把我當作磚) – btcomp

+0

[經修訂]可怕,你很棒。現在我不需要myMap = new HashMap ,因爲我的問題是我試圖「過度」,我必須觀察自己。 (即如果你曾經觀看情景喜劇「中間」,把我當作磚) public void tester(){ String key =「TCA」; 整數值= myMap.get(key); System.out.println(「The codon value is:」+ value); }從測試器輸出 : 密碼子值是:2 MYMAP(buildCodonMap的開始)= {} MYMAP(在buildCodonMap構建HashMap中後)= {CGT = 1,TCA = 2,AGT = 1} – btcomp

+0

如果此答案有用,請考慮接受此答案 –