こんにちは、
趣味でAndroidのプログラミングをしているものです。
一つ皆様のお力を借りたいことがあり、ここに投稿させていただきました。
よろしくお願いいたします。
現在、以下のように適当なフィールドを持ったクラスのインスタンスを複数作成し、並び変えようと試みております。
== ↓ 複数のフィールドを持った独自クラス==
Java
1public class MyClass{ 2 String str1; 3 String str2; 4 int num1; 5 int num2; 6 7 public MyClass(String str1, String str2, int num1, int num2){ 8 this.str1 = str1; 9 (略) 10 } 11 12//以下GetterやSetterなどは省略 13}
== ↓ 上記クラスのリストを扱う独自クラス==
Java
1public class ListOfMyClass{ 2 List<MyClass> list; 3 4 for(int i=0; i<10; i+=1){ 5 list.add(new MyClass(.../*省略*/...)) 6 } 7 8 //以下省略 9}
このようにしてListMyClassにMyClassの配列(List)を持っています。
これに対し「それぞれのMyClassインスタンスが持つstr1の値を比較し、あいうえお順で並び変える」ということをしたいのですが、方法がわからず困ってしまいました。
Collections.sortを使うと自動でこのようなものを並び変えられるのは知っているのですが、並び替えの基準となるフィールドを選択する方法がわかりませんでした。
そこでCompetetorを用いることで、Collections.sortを独自のルールを持って行えることを知りました。しかし文字列の早さ(あいうえお順)を比較する方法がわかりませんでした。
一次元の文字配列であればArrayクラスを用いることで方法はあるとのことでしたが、それをMyClassのような、複数のフィールドを持つクラスに応用する方法ががわかりませんでした。
やりたいことは「MyClassインスタンスの中身(任意の文字列)を参照し、MyClassインスタンス単位で、Listの順番をソートしたい」です。
どなたかご教授お願い致します。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/29 22:54