= 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);
}}}
== コンストラクタ ==
提供されるコンストラクタは以下のものです。
* LzList()
* LzList(List list)
* LzList(Object[] args)
* LzList(Set set)
== メソッド ==
提供されるメソッドは以下のものです。
* list() - 中のListを返す
* or(List)
* and(List)
* sortAsc()
* sortDesc()
* sort(Comparator)
* grep(String)
* ungrep(String)
* join(List)
* uniq()
* equals(List)
* equalsOnSort(List)
* equals(String)
* toString()
* forEach(LzListClosure)
== forEach ==
1.0.3から、クロージャとしてforEachメソッドが追加されました。使い方は以下の通りです。
{{{
public void testLzClosure() 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変数を参照できることに注意してください。