前提
私はJava初心者です。
現在いくつかの問題を解いてるのですが、ある問題で詰まってしまいました。
そこで有識者の方々に意見をお伺いしたいと思い、質問させていただきました。
今回、クラスを用いて入力した値を参照してデータを昇順にソートしたいと考えています。
データとしては【氏名、性別、職業、年齢】といったデータを5個入力し、年齢部分の値を使ってソートしたいと考えています。
しかし1つの配列のデータのみの値でしたらソート出来るのですが、このように複数の配列があるデータを複数用いてソートするというのが分かりません。
考えたり、調べてもやり方が浮かばなかったので意見を貰えると幸いです。
実現したいこと
【田中優、男、会社員、26】
【遠藤仁美、女性、高校生、15】
【加藤博史、男性、自営業、44】
という例をソートして
【遠藤仁美、女性、高校生、15】
【田中優、男、会社員、26】
【加藤博史、男性、自営業、44】
というように年齢を参照してソートしたいです。
該当のソースコード
Java
1class HumanData{ 2 private String name; 3 private String sex; 4 private String profession; 5 int age; 6 7 public void setFields(String n, String s, String p, int a) { 8 name = n; 9 sex = s; 10 profession = p; 11 age = a; 12 } 13 14 public String getName() { 15 return name; 16 } 17 18 public String getSex() { 19 return sex; 20 } 21 22 public String Profession() { 23 return profession; 24 } 25 26 public int getAge() { 27 return age; 28 } 29 30 public void show() { 31 System.out.println("氏名:" + name + "、性別:" + sex + "、職業:" + profession + "、年:" + age + ""); 32 } 33 34} 35 36 37public class Data { 38 39 public static void main(String[] args) throws IOException { 40 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 41 HumanData[] data = new HumanData[2]; 42 43 for(int i = 0; i< data.length; i++) { 44 System.out.println("データを入力してください"); 45 String H_name = br.readLine(); 46 String H_sex = br.readLine(); 47 String H_profession = br.readLine(); 48 String H_age = br.readLine(); 49 int ag = Integer.parseInt(H_age); 50 data[i] = new HumanData(); 51 data[i].setFields(H_name, H_sex, H_profession, ag); 52 } 53 for(int i = 0; i< data.length; i++) { 54 data[i].show(); 55 } 56 } 57} 58 59
試したこと
多次元配列なのか、など色々調べてみましたがどうやって実装したらよいのか分かりませんでした。
思ったのは何らかの配列Xに【氏名、性別、職業、年齢】を格納し、Xの4番目を参照してソートするなどの方法はどうなのかとは思っているのですがどうやったらいいのか分からないので、ご意見お伺いしたいです。
追記:様々なソートのやり方を試してみたのですが、自分のやり方が違うのか上手く出来ませんでした。
なにかこの場合の方法をご教授いただければと思います
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー