LzMap

概要

標準ライブラリの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));
    }

コンストラクタ

以下のコンストラクタが提供されます。

メソッド

以下のメソッドが提供されます。

  • map() - 中のMapを返す
  • keys()
  • sortedKeys()
  • sortedKeys(Comparator)
  • values()
  • or(Map)
  • orLeft(Map)
  • marge(Map)
  • orRight(Map)
  • andLeft(Map)
  • andRight(Map)
  • set(Map)
  • equlas(Map)
  • subset(Object[])
  • subset(List)
  • keyGrep(String)
  • keyUngrep(String)
  • notNull() 1.0.5
  • equlas(String)
  • toString()
  • forEach(LzMapClosure) 1.0.4
  • forEach(List, LzMapClosure) 1.0.3

forEach

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変数を参照できることに注意してください。