« ◆縦長横長のアスペクト比:白金比と白銀比他 | トップページ | ◆相対論の「縮む」の本当の仕組み »

◇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()を使います。

|

« ◆縦長横長のアスペクト比:白金比と白銀比他 | トップページ | ◆相対論の「縮む」の本当の仕組み »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: ◇JavaでArrayListソート:メモ:

« ◆縦長横長のアスペクト比:白金比と白銀比他 | トップページ | ◆相対論の「縮む」の本当の仕組み »