- ベストアンサー
Javaには、構造体はないんですか?
C言語の構造体みたいなのはないんですか? 野球のデータを扱っているのですが、構造体がないのでできません。 打率の順位をソートしたいのですが、Cでは構造体でソートすれば選手名まで全部ソートできたのですが。。。 Javaでは、いちいち選手名、打率などの配列を作っているのですが、打率をソートしてから選手名と一緒に表示しようとしても打率の配列だけ、ソートしてあり選手名の配列と打率の配列があいません。 要するに、打率の配列はソートし、選手の配列はデータを入力したときのままなので、順番が違っているのです。 うまい方法を教えてください。初歩的な質問でごめんなさい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
メンバーが public なクラスが構造体と(ほぼ)同じです。 大体こんな感じ。 // sort Object using Arrays.sort() import java.util.Arrays; class Batter implements Comparable { public double rate; public String name; Batter(double r, String n) { rate = r; name = n; } public int compareTo(Object o) { return (int)((rate - ((Batter)o).rate)*1000.); } } class w03 { public static void main(String[] args) { Object[] batter = { new Batter(0.3, "ichiro"), new Batter(0.1, "shinjo"), new Batter(0.0, "irabu") }; // sort Arrays.sort(batter); // print-out to console for (int i=0; i < batter.length; i++) { Batter b = (Batter)batter[i]; System.out.println(b.name + " " + Double.toString(b.rate)); } } } このように java.util.Arrays の sort() メソッドを使うと、C でやってた イメージに近くなります。 C の qsort() と違って、どんなデータでもソートできるわけではなく、対象と なるクラスは Comparable インターフェースを実装しなくてはいけません。
その他の回答 (1)
- yurarinco
- ベストアンサー率34% (20/58)
構造体の変わりにクラスを作ればいいと思います。 たとえば、 struct Data { char name[20]; double daritsu; }; の代わりに class Data { public String name; public double daritsu; } で、 data = new Data[10];//10人分のデータ とか。
お礼
自分で作ったクラスの配列なんてできるんですね~。 知りませんでした。ありがとうございます。 これで、なんとなくできるような・・・がんばってみます。
お礼
ご丁寧の回答ありがとうございました。 すごくわかりやすくて、とても助かりました。必要なことは全部書いていただけたんですね。 とてもハッキリとわかりました。私初心者なものですから、ComparableをimplementsするとかArrayクラスの存在とか知らなくて、自分でメソッドを作らなければいけないのかな?と思っていました。1通りの順序を書いてもらったので、大助かりです。 ありがとうございます。