在nestedMap
方法中创建nestedMap
时,我可以访问迭代器中的put()
,如下所示:
@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声明为Object-Variable,
private final Map<String, Map<String, String>> centralMap;
但仅在构造函数中实例化,如下所示:
centralMap = new HashMap<String, Map<String, String>>();
我想要实现的方法是删除方法:
@Override
public void remove() {
for (Map<String, String> map : centralMap.values()) {
map = centralMap.get(keyName);
iteratorNested.remove();
if (map.size() <= 0)
iteratorCentral.remove();
}
}
非常感谢!
答案 0 :(得分: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);
}
我不太明白你在第二节中做了什么,所以无法帮助你改进。我没有看到你问题中提到的迭代器。
你让我猜,但你的程序中可能是ELSEWHERE(它会真正帮助你看到更多代码,以及你正在寻找的特定函数原型或行为声明)你希望能够遍历内容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());
}
}
}
注意这闻起来。无类型String
的嵌套映射可能是错误的。你最近有没有机会写Perl?我建议你写第二个问题,询问有关特定问题的良好数据结构。您可以将此代码作为起始位置,人们可能会提供更清晰的解决方案。