LzList

概要

Listオブジェクトの貧弱さは、Javaの問題の一つです。 このクラスでは、集合論的操作を提供します。

サンプル

    List base = FileUtil.readLines("base.txt", "Shift_JIS");
    List input = FileUtil.readLines("input.txt", "Shift_JIS");
    List result = new LzList(base).join(input).uniq().grep("^[A-Za-z]").sortAsc().list();
    DataDumper.dumpList(System.out, result);

コンストラクタ

提供されるコンストラクタは以下のものです。

メソッド

提供されるメソッドは以下のものです。

  • list() - 中のListを返す
  • or(List)
  • and(List)
  • sortAsc()
  • sortDesc()
  • sort(Comparator)
  • grep(String)
  • ungrep(String)
  • join(List)
  • uniq()
  • reverse() 1.0.5
  • asList(Enumeration) 1.0.5
  • asList(Iterator) 1.0.5
  • notNull() 1.0.5
  • equals(List)
  • equalsOnSort(List)
  • equals(String)
  • toString()
  • forEach(LzListClosure) 1.0.3

forEach

1.0.3から、クロージャとしてforEachメソッドが追加されました。使い方は以下の通りです。

public void testLzListClosure() throws Exception {
    List list1 = Arrays.asList(new String[]{"AAA", "ABB", "CCC"});
    final String var = "A";
    LzList grep = new LzList(list1).forEach(new LzListClosure(){
        public boolean process(int i, int len, Object obj) {
            String str = (String)obj;
            return str.startsWith(var);
        }
    });
    assertTrue(grep.equals("[AAA, ABB]"));
}

クロージャの中からfinal変数を参照できることに注意してください。