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);
提供されるコンストラクタは以下のものです。
提供されるメソッドは以下のものです。
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変数を参照できることに注意してください。