質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

3498閲覧

重複しているリストをソートしたい

beginnerOfLife

総合スコア17

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/12/17 14:33

閲覧ありがとうございます。
###質問者のレベル
プログラミングを始めて2週間目になります。

前提・実現したいこと

下記のcsvを一行ずつリストに格納して、一番目の数値の自然順序付けでソートしたいです。
値が重複しているのでMapに入れられないのですが、どうやってソートしたらよいでしょうか。また、同一数値のリストは身長の低い順にソートしたいです。
回答よろしくお願いします。

csv

csv

11,田中,男,177 23,山田,男,169 32,高橋,女,155 42,佐々木,男,173 54,志村,男,180 63,権田,女168

該当のソースコード

Java

1List<List<Bean>> listOfList = new ArrayList<List<Bean>>(); 2String line = ""; 3while((line = br.readLine()) != null) { //brはbufferedReaderのインスタンス 4     5 String[] array = line.split(","); 6    List<String>list = new ArrayList<String>(); 7 list.addAll(Arrays.asList(array)); 8 9    Bean bean = new Bean(); 10 bean.setNumber(list.get(0)); 11 bean.setName(list.get(1)); 12 bean.setHeight.(list.get(2)); 13 14 List<Bean> listOfBean = new ArrayList<Bean>(); 15 listOfBean.add(bean); 16 listOfList.add(listOfBean);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Beanのインスタンスをリストにまとめ、sortメソッドを呼び出します。
その際引数に適切なコンパレータを渡してやれば良いです。

次の記事が役に立つでしょう。
Qiita - [Java] Comparable, Comparator のメモ

######java.util.Comparator#comparing()

オブジェクトから値を取り出して比較する Comparator を生成します。
ラムダあるいはメソッド参照で指定するのが一般的だと思います。

...中略...

Java

Comparator<Bean> c5 = Comparator.comparing(Bean::getData1)
.thenComparing(Bean::getData2);

ご提示のデータの場合、次のようなイメージになるでしょう。

Java

1Beanのリスト.sort(Comparator.comparing(Bean::getId));

もちろん必要に応じてimport及びメソッド定義をお忘れなく。


先の回答にも書きましたが、listOfListは必要ないです。
むしろコードを触りづらくする要因になっています。

投稿2018/12/17 14:47

編集2018/12/17 14:48
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

beginnerOfLife

2018/12/18 02:04

解決しました!メソッド参照はまだ知らなかったので調べてみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問