アプリ版:「スタンプのみでお礼する」機能のリリースについて

import java.util.*;

class BubbleSort {
public static void Sort(double[] a) {

HashMap hmap = new HashMap(); // ☆
int m, i, j;
double n, t;

for(i=0; i<a.length; i++) {
hmap.put(a[i], i); // (1)
}

for(i=0; i<a.length; i++) {
m = hmap.get(a[i]); // (2)
if(m >= 9) {
System.out.println("キー " + (m+1) + " の値=" + a[i]);
}
else {
System.out.println("キー " + (m+1) + " の 値=" + a[i]);
}
}
}

public static void main(String args[]) {

double[] a = {7.6, 7.8, 5.6, 4.1, 0.3, 9.9, 1.5, 8.1, 7.1, 5.3};

Sort(a);
}
}


上記のように、(1)ではkey(main文にある各配列要素)をvalue(keyの要素に対応する番号)に対応付けする、(2)では指定したキーに対応した値を返す、といったことをしたいのですが、エラーが出てしまいコンパイルできません。J2SDK5.0では、☆の部分を、

HashMap<Double,Integer> hmap = new HashMap<Double,Integer>();

のようにすればコンパイル、実行できます。しかし事情があって1.4でしたいのです。どのようにすればできるでしょうか?宜しくお願いします。

A 回答 (3件)

下記のように書いてみて下さい。


注意事項としては、HashMapクラスに格納できるのは、キー、値とも、Objectクラスのサブクラスだけです。
ですので、intとかdoubleとか、プリミティブな変数は格納できません。
下記では、キー、値ともに、Stringクラスに変換してから格納しています。

public static void Sort(double[] a) {

HashMap hmap = new HashMap(); // ☆
int m, i, j;
double n, t;

for(i=0; i<a.length; i++) {
hmap.put(Double.toString(a[i]), Integer.toString(i));
}

for(i=0; i<a.length; i++) {
m = Integer.parseInt((String)hmap.get(Double.toString(a[i]))));
if(m >= 9) {
System.out.println("キー " + (m+1) + " の値=" + a[i]);
} else {
System.out.println("キー " + (m+1) + " の 値=" + a[i]);
}
}
}
    • good
    • 0
この回答へのお礼

ふむふむ。、HashMapクラスに格納できるのは、キー、値とも、Objectクラスのサブクラスだけなのですね。そして、Stringクラスに変換しなければ格納できないのですね。自分が見た参考書にはそんなに詳しく書かれていませんでしたのでとても助かりました。
詳しい説明とソースをありがとうございました。

お礼日時:2005/10/11 23:46

>型の不一致: Integer から int には変換できません。


では
m = ((Integer)(hmap.get(new Double(a[i])))).intValue(); // (2)
では
    • good
    • 0
この回答へのお礼

おおっ!実行できました!
Integerクラスの値をさらにintValueメソッドでintで返すなんて分かりませんでした。
ありがとうございます。

お礼日時:2005/10/11 23:23

hmap.put(new Double(a[i]), new Integer(i)); // (1)


m = (Integer)hmap.get(new Double(a[i])); // (2)
でどうでしょう
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
早速試してみたのですが、(2)がうまくコンパイルが通らず、

型の不一致: Integer から int には変換できません。

と出ました。なぜなんでしょうか?
何度もすみません。
プログラム環境はeclipse3.1.1です。

お礼日時:2005/10/11 02:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!