質問: new HashMap<>();//学生番号,得点 score.put(1,30.0); score.put(2,70.0); score.put(3,40.0); //このあと、成績ごとにsortして、順位をつけたい } ``` ### 欲しい出力 2番, 70.0点 3番, 40.0点 1番, 30.0点 ### わからないこと 例えば、ArrayListに得点をaddして、Collections.sortしても、 値がだけsortされ、学生番号はsortされない このときどうしたらいいのでしょうか
回答: 質問者さんがどのような経緯でその問題に直面しているのか、 仮に学校の課題や研修課題ならば今まで何を勉強してきたのか分かりません。 とりあえず要求する/されているレベルに応じて、2パターン紹介します。 ただできれば良いのなら まず、学籍番号、テストの点数をそれぞれリストに放り込みます。 (仮に前者をstudentIdsと、後者をscoresと命名します。) 自力でバブルソートを実装し、scoresをソートします。 scoresの要素を入れ替える際に、対応するstudentIdsの要素も一緒にひっくり返します。 あとは各リストの要素を順に出力すれば良いです。 できるだけ効率的に書きたいなら クラスStudentと、そのインスタンス同士を比較するコンパレータを用意します。 あとはCollections.sortにStudentのリストとコンパレータを渡してやれば完成です。