Java ソート
今回はソートをやります。
ソートを自分で実装
ソートの方法を自分で実装します。
package test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Sort {
private String str;
public Sort(String s) {
this.str = s;
}
public String getStr() {
return str;
}
public static void main(String[] args) {
List<Sort> ary = new ArrayList<>();
ary.add(new Sort("1"));
ary.add(new Sort(null));
ary.add(new Sort("a"));
ary.add(new Sort("0"));
Collections.sort(ary, new Comparator<Sort>() {
@Override
public int compare(Sort aa, Sort bb) {
String a = aa.getStr();
String b = bb.getStr();
if (a == null && b == null)
return 0;
else if (a == null)
return -1;
else if (b == null)
return 1;
else
return a.compareTo(b);
}
});
for (Sort st : ary) {
System.out.println(st.getStr());
}
}
}
実行イメージ
null
0
1
a
通常のソート(NULLもソートされる)
自然な順番でソートします。NULLもソートしてくれます。
package test;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class Sort {
public static void main(String[] args) {
List<String> ary = new ArrayList<>();
ary.add("1");
ary.add(null);
ary.add("a");
ary.add("0");
System.out.println("***ソート1***");
ary.sort(Comparator.nullsFirst(Comparator.naturalOrder()));
for (String st : ary) {
System.out.println(st);
}
System.out.println("***ソート2***");
ary.sort(Comparator.nullsLast(Comparator.reverseOrder()));
for (String st : ary) {
System.out.println(st);
}
}
}
実行イメージ
***ソート1***
null
0
1
a
***ソート2***
a
1
0
null
通常のソート(NULLがあったらException)
自然な順番でソートします。NULLをソートしようとした場合、Exceptionが発生します。
package test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Sort {
public static void main(String[] args) {
List<String> ary = new ArrayList<>();
ary.add("1");
ary.add("a");
ary.add("0");
System.out.println("***ソート1***");
Collections.sort(ary);
for (String st : ary) {
System.out.println(st);
}
System.out.println("***ソート2***");
Collections.reverse(ary);
for (String st : ary) {
System.out.println(st);
}
}
}
実行イメージ
***ソート1***
0
1
a
***ソート2***
a
1
0
ページのトップへ戻る