トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

オブジェクト指向プログラミング(C317-2 2005/11/07)

オブジェクト指向プログラミング 第7回

 正規表現

Javaではjava.util.regexパッケージに正規表現で検索などの機能を提供している。

  1. 正規表現パターンの文字列を定義する。
  2. StaticメソッドPattern.maches()を使い、正規表現に一致するかを調べる。
import java.util.regex.Pattern;
....
String birthday;
...
String regex = "[12][0-9]{3}/(?:0[1-9]|1[0-2])/(?:0[1-9]|[12][0-9]|3[01])";
boolean b = Pattern.maches(regex, birthday);
  • [0-9]{3}は[0-9][0-9][0-9]と同じ、x{n}はパターンxをn回繰り返すことを意味する。
  • (?:...)は参照なしのグループ化を示す

 拡張for文

Java1.5で追加された新しい機能。スクリプト系言語の持つforeach文に相当する。

配列リストlst内のオブジェクトに一つずつアクセスするには次のように記す。lstにはHumanクラスのインスタンスが格納される。

List<Human> lst = new ArrayList<Human>();
...
Human man = new Human("Pop", "1990/01/01");
lst.add(man);
...
for(Human m : lst){
  System.out.println(m.getName());
  ....
}

参考

 配列リストのソート

Humanクラス配列リストをソートするにはコンパレータが必要になる。コンパレータはComparatorインターフェースを実装するクラスで定義する。

次のリストは年齢でソートするためのコンパレータクラスである。

import java.util.Comparator;
public class AgeSorter implements Comparator {

    public int compare(Object arg0, Object arg1) {
        Human h1 = (Human) arg0;
        Human h2 = (Human) arg1;

        return h1.getAge() - h2.getAge();
    }
}

配列リストのソートはCollectionsクラスのStaticメソッドsort()を使う。

AgeSorter ageSorter = new AgeSorter();
Collections.sort(lst,  ageSorter);

ソートすることで配列リストの二分木を再構築している。Humanクラスではキーとなるフィールドが複数あるので二分木のノードには値がそのまま入っているのではなく、各オブジェクトへの参照値が格納されている。


[オブジェクト指向プログラミング(C317-2)]