0

当在方法中创建时,我可以nestedMap在我的迭代器中访问我的,如下所示:nestedMapput()

@Override
public String put(final String row, final String column, final String value) {
    /**
     * Second map which is contained by centralMap, that contain Strings as
     * Keys and Values.
     */
    Map<String, String> nestedMap;

    if (centralMap.containsKey(row))
        nestedMap = centralMap.get(row);
    else
        nestedMap = new HashMap<String, String>();
    if (!nestedMap.containsKey(column))
        counter++;
    centralMap.put(row, nestedMap);
    return nestedMap.put(column, value);
}

并且 centralMap 被声明为一个对象变量,

private final Map<String, Map<String, String>> centralMap;

但仅在构造函数中实例化,如下所示:

centralMap = new HashMap<String, Map<String, String>>();

我试图实现的方法是 remove 方法:

@Override
    public void remove() {
        for (Map<String, String> map : centralMap.values()) {
            map = centralMap.get(keyName);
            iteratorNested.remove();
            if (map.size() <= 0)
                iteratorCentral.remove();
        }
    }

非常感谢!

4

1 回答 1

0

不知道你到底在问什么,但我认为这更容易阅读:

@Override
public String put(final String row, final String column, final String value) {
    /**
     * Second map which is contained by centralMap, that contain Strings as
     * Keys and Values.
     */
    Map<String, String> nestedMap = centralMap.get(row);
    if (nestedMap == null) {
      nestedMap = new HashMap<String, String>();
      centralMap.put(row,nestedMap);
    }

    if (!nestedMap.containsKey(column))
        counter++;
    centralMap.put(row, nestedMap);
    return nestedMap.put(column, value);
}

我不太明白您在第二节中在做什么,因此无法帮助您改进。而且我没有看到您的问题中提到的迭代器。

你让我猜,但也许在你的程序中的其他地方(它真的有助于查看更多代码,以及你正在寻找的特定函数原型或行为声明)你希望能够遍历centralMap实例的内容, 和 的嵌套实例nestedMap。是的你可以。

public void iterateOverAllNested()
{
   for (Map.Entry<String,Map<String,String>> nested : centralMap) {
     final String centralKey = nested.key();
     final Map<String,String> nestedMap = nested.value();
     System.out.println("Central map row/column: "+centralKey);
     for (Map.Entry<String,String> entry : nestedMap) {
       System.out.println(" key="+entry.key()+", value="+entry.value());
     }
   }
}

请注意,这是气味。untypedString的嵌套映射可能是错误的。你最近有没有机会写 Perl?我建议您编写第二个 SO 问题,询问针对您的特定问题的良好数据结构。您可以将此代码作为您的起点,人们可能会提供更简洁的解决方案。

于 2012-05-10T20:49:24.053 回答