ソート/独自クラスでキー指定のソートサンプル
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* 独自クラスでキー指定のソートサンプル [#xff612a1]
独自クラスにメンバー変数があり、処理によりソートするキー(...
サンプルソースを以下に記します。~
ソートする方法は1つでいいのだ!と言う場合は、以下の記事を...
-[[独自クラスのソートサンプル>ソート/独自クラスのソートサ...
#contents
* 関連記事 [#i8e98d42]
-[[ArrayListのソートサンプル>ソート/ArrayListのソートサン...
-[[独自クラスのソートサンプル>ソート/独自クラスのソートサ...
//-[[独自クラスでキー指定のソートサンプル>ソート/独自クラ...
* 独自クラスでメンバ変数を指定でソートするサンプルソース ...
以下のサンプルソースでは、OperationSystemというクラスを作...
ソートするサンプルソースとなっています。~
ソートするキー(メンバ変数)は、productName, marketShareの...
#ref(OrigListSort2.java)
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
class OperationSystem {
String productName;
double marketShare;
// constracter
public OperationSystem(String osname, double share) {
this.productName = osname;
this.marketShare = share;
}
public String toString() { // for System.out.println
return this.productName + " : " + this.marketSha...
}
}
// sort/reverse key : productName
class ProductNameComparator implements Comparator {
public int compare(Object o1, Object o2) {
return ((OperationSystem)o1).productName.compare...
}
}
// sort/reverse key : marketShare
class MarketShareComparator implements Comparator {
public int compare(Object o1, Object o2) {
if (((OperationSystem)o2).marketShare < ((Operat...
if (((OperationSystem)o2).marketShare > ((Operat...
return 0;
}
}
public class OrigListSort2 {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
ArrayList<OperationSystem> osl = new ArrayList<O...
// set data
osl.add(new OperationSystem("ZZ OS", 3.0D));
osl.add(new OperationSystem("AA OS", 27.0D));
osl.add(new OperationSystem("aa OS", 7.0D));
osl.add(new OperationSystem("zz OS", 2.0D));
osl.add(new OperationSystem("CC OS", 49.0D));
osl.add(new OperationSystem("cc OS", 1.0D));
System.out.println("-- TARGET DATA --\n" + osl);
System.out.println("-- productName sort --");
Collections.sort(osl, new ProductNameComparator(...
System.out.println("sort: " + osl);
System.out.println("-- productName reverse --");
Collections.sort(osl, new ProductNameComparator(...
Collections.reverse(osl);
System.out.println("reverse: " + osl);
System.out.println("-- marketShare sort --");
Collections.sort(osl, new MarketShareComparator(...
System.out.println("sort: " + osl);
System.out.println("-- marketShare -reverse -");
Collections.sort(osl, new MarketShareComparator(...
Collections.reverse(osl);
System.out.println("reverse: " + osl);
}
}
ソートキーとして、productNameとmarketShareの両方をサポー...
以下の2つのクラスを実装しています。
class ProductNameComparator implements Comparator {
public int compare(Object o1, Object o2) {
<snip>
}
// sort/reverse key : marketShare
class MarketShareComparator implements Comparator {
public int compare(Object o1, Object o2) {
<snip>
}
これは、Collectionsの以下のメソッドを使用したいため、Comp...
-Collections
sort(List<T> list, Comparator<? super T> c)
ソース上で
Collections.sort(osl, new MarketShareComparator());
<snip>
Collections.sort(osl, new MarketShareComparator());
としている箇所になります。~
compareを実装したクラスをnewしてCollections.sortにListと...
* 実行結果 [#x289ce85]
以下、サンプルソースをコンパイルし実行した時の出力です。~
productName, marketShareでソート・逆ソートされているのが...
$ javac OrigListSort2.java
$ java OrigListSort2
-- TARGET DATA --
[ZZ OS : 3.0%, AA OS : 27.0%, aa OS : 7.0%, zz OS : 2.0%...
-- productName sort --
sort: [AA OS : 27.0%, CC OS : 49.0%, ZZ OS : 3.0%, aa OS...
-- productName reverse --
reverse: [zz OS : 2.0%, cc OS : 1.0%, aa OS : 7.0%, ZZ O...
-- marketShare sort --
sort: [cc OS : 1.0%, zz OS : 2.0%, ZZ OS : 3.0%, aa OS :...
-- marketShare -reverse -
reverse: [CC OS : 49.0%, AA OS : 27.0%, aa OS : 7.0%, ZZ...
使用したJDKのバージョンは以下の通りです。
$ javac -version ; java -version
javac 1.8.0_102
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) Client VM (build 25.102-b14, mixed mode)
以上、独自(自作)クラスでキーを指定してソート・逆ソートす...
終了行:
#navi(../)
* 独自クラスでキー指定のソートサンプル [#xff612a1]
独自クラスにメンバー変数があり、処理によりソートするキー(...
サンプルソースを以下に記します。~
ソートする方法は1つでいいのだ!と言う場合は、以下の記事を...
-[[独自クラスのソートサンプル>ソート/独自クラスのソートサ...
#contents
* 関連記事 [#i8e98d42]
-[[ArrayListのソートサンプル>ソート/ArrayListのソートサン...
-[[独自クラスのソートサンプル>ソート/独自クラスのソートサ...
//-[[独自クラスでキー指定のソートサンプル>ソート/独自クラ...
* 独自クラスでメンバ変数を指定でソートするサンプルソース ...
以下のサンプルソースでは、OperationSystemというクラスを作...
ソートするサンプルソースとなっています。~
ソートするキー(メンバ変数)は、productName, marketShareの...
#ref(OrigListSort2.java)
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
class OperationSystem {
String productName;
double marketShare;
// constracter
public OperationSystem(String osname, double share) {
this.productName = osname;
this.marketShare = share;
}
public String toString() { // for System.out.println
return this.productName + " : " + this.marketSha...
}
}
// sort/reverse key : productName
class ProductNameComparator implements Comparator {
public int compare(Object o1, Object o2) {
return ((OperationSystem)o1).productName.compare...
}
}
// sort/reverse key : marketShare
class MarketShareComparator implements Comparator {
public int compare(Object o1, Object o2) {
if (((OperationSystem)o2).marketShare < ((Operat...
if (((OperationSystem)o2).marketShare > ((Operat...
return 0;
}
}
public class OrigListSort2 {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
ArrayList<OperationSystem> osl = new ArrayList<O...
// set data
osl.add(new OperationSystem("ZZ OS", 3.0D));
osl.add(new OperationSystem("AA OS", 27.0D));
osl.add(new OperationSystem("aa OS", 7.0D));
osl.add(new OperationSystem("zz OS", 2.0D));
osl.add(new OperationSystem("CC OS", 49.0D));
osl.add(new OperationSystem("cc OS", 1.0D));
System.out.println("-- TARGET DATA --\n" + osl);
System.out.println("-- productName sort --");
Collections.sort(osl, new ProductNameComparator(...
System.out.println("sort: " + osl);
System.out.println("-- productName reverse --");
Collections.sort(osl, new ProductNameComparator(...
Collections.reverse(osl);
System.out.println("reverse: " + osl);
System.out.println("-- marketShare sort --");
Collections.sort(osl, new MarketShareComparator(...
System.out.println("sort: " + osl);
System.out.println("-- marketShare -reverse -");
Collections.sort(osl, new MarketShareComparator(...
Collections.reverse(osl);
System.out.println("reverse: " + osl);
}
}
ソートキーとして、productNameとmarketShareの両方をサポー...
以下の2つのクラスを実装しています。
class ProductNameComparator implements Comparator {
public int compare(Object o1, Object o2) {
<snip>
}
// sort/reverse key : marketShare
class MarketShareComparator implements Comparator {
public int compare(Object o1, Object o2) {
<snip>
}
これは、Collectionsの以下のメソッドを使用したいため、Comp...
-Collections
sort(List<T> list, Comparator<? super T> c)
ソース上で
Collections.sort(osl, new MarketShareComparator());
<snip>
Collections.sort(osl, new MarketShareComparator());
としている箇所になります。~
compareを実装したクラスをnewしてCollections.sortにListと...
* 実行結果 [#x289ce85]
以下、サンプルソースをコンパイルし実行した時の出力です。~
productName, marketShareでソート・逆ソートされているのが...
$ javac OrigListSort2.java
$ java OrigListSort2
-- TARGET DATA --
[ZZ OS : 3.0%, AA OS : 27.0%, aa OS : 7.0%, zz OS : 2.0%...
-- productName sort --
sort: [AA OS : 27.0%, CC OS : 49.0%, ZZ OS : 3.0%, aa OS...
-- productName reverse --
reverse: [zz OS : 2.0%, cc OS : 1.0%, aa OS : 7.0%, ZZ O...
-- marketShare sort --
sort: [cc OS : 1.0%, zz OS : 2.0%, ZZ OS : 3.0%, aa OS :...
-- marketShare -reverse -
reverse: [CC OS : 49.0%, AA OS : 27.0%, aa OS : 7.0%, ZZ...
使用したJDKのバージョンは以下の通りです。
$ javac -version ; java -version
javac 1.8.0_102
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) Client VM (build 25.102-b14, mixed mode)
以上、独自(自作)クラスでキーを指定してソート・逆ソートす...
ページ名: