C言語の構造体みたいなのはないんですか?
野球のデータを扱っているのですが、構造体がないのでできません。
打率の順位をソートしたいのですが、Cでは構造体でソートすれば選手名まで全部ソートできたのですが。。。
Javaでは、いちいち選手名、打率などの配列を作っているのですが、打率をソートしてから選手名と一緒に表示しようとしても打率の配列だけ、ソートしてあり選手名の配列と打率の配列があいません。
要するに、打率の配列はソートし、選手の配列はデータを入力したときのままなので、順番が違っているのです。
うまい方法を教えてください。初歩的な質問でごめんなさい。
No.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 インターフェースを実装しなくてはいけません。
ご丁寧の回答ありがとうございました。
すごくわかりやすくて、とても助かりました。必要なことは全部書いていただけたんですね。
とてもハッキリとわかりました。私初心者なものですから、ComparableをimplementsするとかArrayクラスの存在とか知らなくて、自分でメソッドを作らなければいけないのかな?と思っていました。1通りの順序を書いてもらったので、大助かりです。
ありがとうございます。
No.1
- 回答日時:
構造体の変わりにクラスを作ればいいと思います。
たとえば、
struct Data {
char name[20];
double daritsu;
};
の代わりに
class Data {
public String name;
public double daritsu;
}
で、
data = new Data[10];//10人分のデータ
とか。
自分で作ったクラスの配列なんてできるんですね~。
知りませんでした。ありがとうございます。
これで、なんとなくできるような・・・がんばってみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelの50音順ソートを全ての行列に適用するには? 4 2022/12/05 11:28
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Java Java配列の問題を教えてください。 乱数で20個出力し、最大、最小、合計、平均を求め、更に昇順にソ 3 2023/07/10 18:32
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Excel(エクセル) Excel 効率的な名簿と得点の管理の仕方 8 2022/08/07 08:15
- その他(プログラミング・Web制作) sortの優先キーについて(スプレッドシート) 1 2023/01/17 17:59
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Excel(エクセル) 重複しているか否かをソートせずに判断する方法ありますか? 2 2022/07/06 21:16
- その他(パソコン・スマホ・電化製品) 挿入ソートとマージソートを比較すると,挿入ソートのほうが計算量は少なく,効率的なアルゴリズムである。 1 2022/11/30 17:31
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaBeansの配列の値取得方法に...
-
[Ljava.lang.Stringってなんですか
-
javaで大容量テキストファイル...
-
javaでの文字列からの数字抽出
-
java StringとString[]の違い
-
Javaで文字と数字が混ざったも...
-
無名配列の作成方法について質問
-
この警告はどうすれば?
-
配列で、値の入っている要素数...
-
Javaで文字を漢字であるか否か...
-
C#で動的配列Listの中身をListB...
-
C言語でunsigned char配列を連...
-
セッションを使ったint型の値の...
-
ランダムでのboolean値の与え方
-
String型をbyte型へ
-
配列について
-
Struts:可変個数のテキストボ...
-
ArrayListからBean配列に値をセ...
-
同じ文字を探しカウントしたい
-
C言語のポインターに関する警告
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaで文字と数字が混ざったも...
-
[Ljava.lang.Stringってなんですか
-
main(String[] args) の args...
-
この警告はどうすれば?
-
【C#】ハッシュテーブル(連想...
-
javamailで複数人にメールを送...
-
jspでの二次元配列
-
配列をセッションに割り当てた後で
-
同じ配列またはクラスを、2回...
-
java
-
Javaで文字を漢字であるか否か...
-
csvファイルを2次元配列に格納
-
配列の中に複数存在する数がい...
-
配列で、値の入っている要素数...
-
JavaのBase64デコードで正しく...
-
C言語でunsigned char配列を連...
-
C#で動的配列Listの中身をListB...
-
【Ajax通信&Java】配列の受け取...
-
javaについて
-
javaでEUC-JP文字列→UTF-8への変換
おすすめ情報