◇JavaでArrayListソート:メモ
メモです
==== ソート可能クラス // P.java public class P implements Comparable<P>{ public int x; public int y; public P(int x_,int y_){x=x_;y=y_;} public int compareTo(P that){ return this.x - that.x; // 昇順、 that-thisなら降順 } public String toString(){ return "{"+x+","+y+"}"; } } ==== 利用・ソートする // Test.java import java.util.*; public class Test{ public static void main(String[]args){ try{ ArrayList<P> a=new ArrayList<P>(); a.add(new P(3,5));a.add(new P(2,7));a.add(new P(9,1)); Collections.sort(a); System.out.println(a); Collections.sort(a,new PComparator()); System.out.println(a); } catch(Exception e){ e.printStackTrace(System.err); System.exit(1); } System.exit(0); } } //==== 比較のためのクラス class PComparator implements java.util.Comparator<P>{ public int compare(P a, P b){ return a.y - b.y; // 昇順、 引数2-引数1なら降順 } } ==== 出力結果 [{2,7}, {3,5}, {9,1}] [{9,1}, {3,5}, {2,7}]
JavaでArrayListのソート
単純なのにすぐ忘れるのでメモ。
ArrayListは驚くべきことにsort機能を持ちません。
Collection.sort()を用います。内容となるクラスが比較可能な場合、
sort()にArrayListオブジェクトを与えると、ソートされます。
クラスを比較可能とするにはComparableインターフェースを
実装します。
内容となるクラスとは別に比較のためだけのクラスを作って
ArrayListとともにsort()関数に与えることでソートさせる
ことができます。
比較のための関数はComparatorインターフェースを実装します。
配列の場合はArrays.sort()を使います。
| 固定リンク
コメント