4

私の問題は、キーがオブジェクトである HashMap があり、そのオブジェクトの変数の 1 つにする必要があることです。現在、HashMap.get() は myNums オブジェクトのみを参照していますが、「実際のキー」である num1 の値を取得する方法が必要です。myNums のインスタンス化がないため、myNums.get() メソッドを使用できません。HashMap の各項目をループしてチェックすることはできますが、それはしたくありません。よりエレガントなソリューションはありますか?

私が持っているもの:

public static void main(String [] args){
   int [] array = {//integers 1-100};
   HashMap < myNums, String > hash = //data from another source;
   for(int i = 0;i < array.length; i++){
       if(hash.get(i) != null)
          OtherFunction(hash.get(i));         
   }
}

public class myNums{
   private int num1;
   private int num2;
   //get and set functions...
}
4

2 に答える 2

1

たぶん、エントリーの反復はあなたの目的により役立ちます:

for (Entry<MyNums, String> entry : map.entrySet()) {
    System.out.println("Key:" + entry.getKey());
    System.out.println("Value:" + entry.getValue());
}

この反復スタイルでは、常に呼び出す必要はありませんget

于 2012-08-09T21:27:29.220 に答える
0

hashCode() メソッドをオーバーライドし、クラスの equals() メソッドを拡張する必要があります。

private class myNums{
  public int hashCode(){
    //Return something unique
  }
  public boolean equals(myNums that){
    return this.num1==that.num1;
  }
}
于 2012-08-09T21:49:39.007 に答える