JunkUtil (1.1.0) | 2012-04-29 13:38 |
JunkUtil安定版 (1.1.0) | 2012-04-29 13:45 |
標準ライブラリのMapの貧弱さは、Javaの問題点の一つです。 このクラスでは、集合論的な操作を提供します。
//LzMapを定義するコンストラクタ LzMap base = new LzMap(new String[]{ "a", "1", "b", "2", "c", "3", "d", "4" }); LzMap result = base.subset(new String[]{"a", "c"}); List sortedKey = result.sortedKeys(); for (int i = 0; i < sortedKey.size(); i++) { Object key = sortedKey.get(i); System.out.print(key); System.out.println("=" + result.map().get(key)); }
以下のコンストラクタが提供されます。
以下のメソッドが提供されます。
1.0.3から、クロージャとしてforEachメソッドが追加されました。使い方は以下の通りです。
private LzMap test1 = new LzMap(new String[]{ "a", "1", "b", "2", "c", "3", }); public void testLzMapClosure() throws Exception { final String var1 = "a"; final String var2 = "b"; LzMap grep = test1.forEach(test1.keys(), new LzMapClosure(){ public boolean process(Object key, Object value) { String keyStr = (String)key; return keyStr.startsWith(var1) || keyStr.startsWith(var2); } }); assertTrue(grep.equals("{a=1, b=2}")); }
クロージャの中からfinal変数を参照できることに注意してください。