<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> Main {
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args) {
ArrayList</span><Pair> list = <span style="color: #0000ff;">new</span> ArrayList<><span style="color: #000000;">();
list.add(</span><span style="color: #0000ff;">new</span> Pair(8,1<span style="color: #000000;">));
list.add(</span><span style="color: #0000ff;">new</span> Pair(6,5<span style="color: #000000;">));
list.add(</span><span style="color: #0000ff;">new</span> Pair(6,3<span style="color: #000000;">));
list.add(</span><span style="color: #0000ff;">new</span> Pair(5,7<span style="color: #000000;">));
list.add(</span><span style="color: #0000ff;">new</span> Pair(4,9<span style="color: #000000;">));
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 用Comparator排序 -- 按照两个数的和排序</span>
list.sort(<span style="color: #0000ff;">new</span><span style="color: #000000;"> PairComparator());
</span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (Pair p: list)
System.out.println(p);
System.out.println();
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 用Comparable排序 -- 先按第一个数排序 再按第二个数排序</span>
<span style="color: #000000;"> Collections.sort(list);
<span style="color: #0000ff;">for<span style="color: #000000;"> (Pair p: list)
System.out.println(p);
}
}
<span style="color: #0000ff;">class PairComparator <span style="color: #0000ff;">implements Comparator
<span style="color: #000000;"> {
@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> compare(Pair p1,Pair p2) {
</span><span style="color: #0000ff;">int</span> sum1 =<span style="color: #000000;"> p1.getSum();
</span><span style="color: #0000ff;">int</span> sum2 =<span style="color: #000000;"> p2.getSum();
</span><span style="color: #0000ff;">return</span> (sum1 == sum2 ? 0 : (sum1 < sum2 ? -1 : 1<span style="color: #000000;">));
}
}
<span style="color: #0000ff;">class Pair <span style="color: #0000ff;">implements Comparable<span style="color: #000000;"> {
</span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> first;
</span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> second;
</span><span style="color: #0000ff;">public</span> Pair(<span style="color: #0000ff;">int</span> first,<span style="color: #0000ff;">int</span><span style="color: #000000;"> second) {
</span><span style="color: #0000ff;">this</span>.first =<span style="color: #000000;"> first;
</span><span style="color: #0000ff;">this</span>.second =<span style="color: #000000;"> second;
}
@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> compareTo(Pair p) {
</span><span style="color: #0000ff;">if</span> (first ==<span style="color: #000000;"> p.first) {
</span><span style="color: #0000ff;">if</span> (second == p.second) <span style="color: #0000ff;">return</span> 0<span style="color: #000000;">;
</span><span style="color: #0000ff;">return</span> second < p.second ? -1 : 1<span style="color: #000000;">;
}
</span><span style="color: #0000ff;">return</span> first < p.first ? -1 : 1<span style="color: #000000;">;
}
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> getSum() {
</span><span style="color: #0000ff;">return</span> first +<span style="color: #000000;"> second;
}
</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String toString() {
</span><span style="color: #0000ff;">return</span> "[first:" + first + ",second:" + second + ",sum:" + getSum() + "]"<span style="color: #000000;">;
}
</span><span style="color: #000000;">
}
<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> Main {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
ArrayList
list = <span style="color: #0000ff;">new ArrayList<><span style="color: #000000;">();
list.add("abcd"<span style="color: #000000;">);
list.add("bcd"<span style="color: #000000;">);
list.add("cd"<span style="color: #000000;">);
list.add("d"<span style="color: #000000;">);
Collections.sort(list);
System.out.println(list);
list.sort(<span style="color: #0000ff;">new<span style="color: #000000;"> MyStringComparator());
System.out.println(list);
}
}
<span style="color: #008000;">//<span style="color: #008000;"> 自定义的String排序方法 按字符串长度排序
<span style="color: #0000ff;">class MyStringComparator <span style="color: #0000ff;">implements Comparator<span style="color: #000000;"> {
@Override
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> compare(String o1,String o2) {
</span><span style="color: #0000ff;">int</span> len1 =<span style="color: #000000;"> o1.length();
</span><span style="color: #0000ff;">int</span> len2 =<span style="color: #000000;"> o2.length();
</span><span style="color: #0000ff;">return</span> (len1 == len2 ? 0 : (len1 < len2 ? -1 : 1<span style="color: #000000;">));
}
}