Created
June 22, 2012 11:25
-
-
Save oshiro-kazuma/2972183 to your computer and use it in GitHub Desktop.
Commons Collectionsを使った複合ソート
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// HogeBean.java | |
public class HogeBean { | |
private int age; | |
private String name; | |
private String hometown; | |
public HogeBean(int age, String hometown, String name) { | |
this.setAge(age); | |
this.hometown = hometown; | |
this.name = name; | |
} | |
public int getAge() { | |
return age; | |
} | |
public void setAge(int age) { | |
this.age = age; | |
} | |
public String getName() { | |
return name; | |
} | |
public void setName(String name) { | |
} | |
public String getHometown() { | |
return hometown; | |
} | |
public void setHometown(String hometown) { | |
this.hometown = hometown; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// SortTest.java | |
import java.util.ArrayList; | |
import java.util.Collections; | |
import java.util.List; | |
import org.apache.commons.beanutils.BeanComparator; | |
import org.apache.commons.collections.comparators.ComparatorChain; | |
/** ComparatorChainを使ってみる */ | |
public class SortTest { | |
/** メイン */ | |
public static void main(String[] args) { | |
List<HogeBean> beans = createTestData(); | |
SortUtil.sort(beans); | |
// 結果出力 | |
for (HogeBean b : beans) { | |
System.out.print(b.getHometown() + " "); | |
System.out.print(b.getAge() + " "); | |
System.out.print(b.getName() + " "); | |
System.out.println(); | |
} | |
} | |
/** ソート・ユーティリティークラス */ | |
static class SortUtil { | |
/** | |
* 引数のリストをソートする。 | |
* hogetown,age,nameの順にソート。 | |
* | |
* @param beans HogeBeanのリスト | |
*/ | |
public static void sort(List<HogeBean> beans) { | |
ComparatorChain comparator = new ComparatorChain(); | |
// ソート対象のBeanのメンバ | |
comparator.addComparator(new BeanComparator("hometown")); | |
comparator.addComparator(new BeanComparator("age")); | |
comparator.addComparator(new BeanComparator("name")); | |
Collections.sort(beans, comparator); | |
} | |
} | |
/** テストデータ作成 */ | |
public static List<HogeBean> createTestData() { | |
List<HogeBean> beans = new ArrayList<HogeBean>(); | |
beans.add(new HogeBean(18, "沖縄", "ほげ太郎")); | |
beans.add(new HogeBean(16, "大阪", "ふー太郎")); | |
beans.add(new HogeBean(16, "大阪", "ぷー太郎")); | |
beans.add(new HogeBean(22, "沖縄", "すずきさん")); | |
beans.add(new HogeBean(23, "千葉", "ひがさん")); | |
beans.add(new HogeBean(23, "千葉", "ひがしさん")); | |
beans.add(new HogeBean(23, "千葉", "ひがしおんなさん")); | |
beans.add(new HogeBean(23, "千葉", "おおうらさん")); | |
beans.add(new HogeBean(27, "千葉", "すずきさん")); | |
beans.add(new HogeBean(43, "沖縄", "こちんださん")); | |
beans.add(new HogeBean(55, "東京", "ひがしおんなさん")); | |
beans.add(new HogeBean(15, "沖縄", "がじゃさん")); | |
beans.add(new HogeBean(19, "沖縄", "こちんださん")); | |
return beans; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Commons Collections を使ったソートのテスト
出力結果
千葉 23 おおうらさん
千葉 23 ひがさん
千葉 23 ひがしおんなさん
千葉 23 ひがしさん
千葉 27 すずきさん
大阪 16 ふー太郎
大阪 16 ぷー太郎
東京 55 ひがしおんなさん
沖縄 15 がじゃさん
沖縄 18 ほげ太郎
沖縄 19 こちんださん
沖縄 22 すずきさん
沖縄 43 こちんださん
必要なライブラリ
commons-beanutils-1.8.3.jar
commons-collections-3.2.1.jar
commons-logging-1.1.1.jar