2016-10-04 16 views
0

私は、スタークをテーマにしたプロジェクトを行っています。ここでは、乗組員と訪問した惑星のリストを取得し、 Starfleet。例えばツリーマップ内のint配列の要素にアクセスして変更する方法

この...

Guinan,Drema IV 
Picard,Gamalon V 
Barclay,Valo III 
Riker,Theydat IV 
Pulaski,Alpha Moon 
Troi,Tessen III 
... 

は私が使用することを決めたので、自動的に着信データをソートする一般的な構造を使用する必要がこれを行うには、この

Acamar III: 
    B. Crusher    11 
    Barclay     6 
    Data     15 
    Gomez     3 
    Guinan     4 
    Lefler     5 
    O'Brien    12 
    Ogawa     4 
    Picard     5 
    Pulaski    14 
    Riker     12 
    Troi     9 
    W. Crusher    4 
    Worf     14 
    Yar      3 
... 

なる必要与えられた惑星に各乗組員が行った訪問数を格納する15要素のint配列のツリーマップ。

私の質問は、私は、Javaに新しい非常に居ないので、どのように私はツリーマップと更新内部の配列要素から与えられた配列要素内の値を値を取得でしょうか?私の問題は、Tree Mapを使って作業することで見つけられるすべての例は、それらの内部の配列やdon't show how to get a value and update values after the first insertionの配列を伴わないことです。以下では、これを達成するための最良の推測で私の現在の擬似コードを与えました。誰かがこれを行う方法を知っていれば、より良い方法を提案してください。

P.S.私は必要なループを実装するつもりですの後に私は正しく1回の反復を得ることができます

EDIT:15要素のint配列の各要素は、クルーのメンバーに対応しています。 array[2]とヤールはarray[14]

import java.util.*; 
public class TreeMapDemo { 

    public static void main(String args[]) { 
     // Create a hash map 
     TreeMap tm = new TreeMap(); 
     int indexDesired; 
     int visits; 
     String planetNameVariable; 
     String crewMemberName; 

     //Scan input using Scanner and assign planet name and crew name to 
     //correct variables (code provided by instructor) 

     // Put elements to the map 
     //if(planet doesn't already exist in tm) 
      tm.put(planetNameVariable, new int[14]); 

     //Decides which element of the array must be incremented 
     indexDesired = crewToIndex(crewMemberName); 

     //Increments visit count of crewMemberName on planetNameVariable 
     visits = //How do I get the value of the array associated with planetNameVariable at indexDesired? 
     tm.put(planetNameVariable, int[indexDesired] = visits + 1 //How do I insert into an array element here?); 

     // Get an iterator 
     Iterator i = set.iterator(); 

     // Display element 
     // Code not designed yet 

    } 
} 

答えて

1

あなたはこのような何かをすることができますでしょう。ここでは配列を1回だけマップに配置する必要があります。それ以降は参照のみを取得するため、マップ内でも同様に変更されます。

int visits[] = null; 
    // Increments visit count of crewMemberName on planetNameVariable 
    visits = tm.get(planetNameVariable); 
    if (visits == null) { 
     tm.put(planetNameVariable, new int[14]); 
     visits = tm.get(planetNameVariable); 
    } 
    visits[indexDesired]++; 

    // Get an iterator 
    Iterator<String> iterator = tm.keySet().iterator(); 
    while (iterator.hasNext()) { 
     String key = iterator.next(); 
     int[] temp = tm.get(key); 
     if (temp != null) { 
      for (int i = 0; i < temp.length; i++) { 
       System.out.println(key + " " + temp[i]); 
      } 
     } 
    } 
関連する問題