gpt4 book ai didi

java - 二维映射中的迭代器

转载 作者:行者123 更新时间:2023-11-29 06:00:06 25 4
gpt4 key购买 nike

我想知道如何在 2Dimensional HashMap 中进行迭代?我正在创建一个对象 TrueStringMap2D,它执行以下操作:它将是一个 2D map ,我的意思是 2 个键和一个值。

但是这里实现的迭代器不起作用..我不知道如何在 TrueStringMap2D :S 中重新定义 Iterator 方法(如果可能,应该在 iterator() 函数中删除)任何人都可以帮忙吗?非常感谢!!

最佳答案

我会将这个问题重新解释为我喜欢回答的类似问题,然后希望该问题的答案对您有用。

这是我要回答的问题:

How do I write an iterator that iterates over all values in a Map<String, Map<String, String>>?

我是这样解决的:

class TwoDimIterator implements Iterator<String> {

Iterator<Map<String, String>> outerIter;
Iterator<String> innerIter = Collections.<String>emptyList().iterator();

public TwoDimIterator(Map<String, Map<String, String>> twoDimMap) {
outerIter = twoDimMap.values().iterator();
advanceInner();
}

@Override
public boolean hasNext() {
return innerIter.hasNext();
}

@Override
public String next() {
String toReturn = innerIter.next();
advanceInner();
return toReturn;
}

private void advanceInner() {
while (!innerIter.hasNext()) {
if (!outerIter.hasNext()) {
innerIter = Collections.<String>emptyList().iterator();
return;
}
innerIter = outerIter.next().values().iterator();
}
}

@Override
public void remove() {
throw new UnsupportedOperationException();
}
}

测试代码:

class Test {

public static void main(String[] args) {

// Create a map
Map<String, Map<String, String>> twoDimMap =
new HashMap<String, Map<String, String>>();

// Fill it
Map<String, String> innerA = new HashMap<String, String>();
innerA.put("1", "A1");
innerA.put("2", "A2");

Map<String, String> innerB = new HashMap<String, String>();
innerB.put("1", "B1");
innerB.put("2", "B2");

twoDimMap.put("A", innerA);
twoDimMap.put("B", innerB);

// Create an iterator for the values:
Iterator<String> twoDimIter = new TwoDimIterator(twoDimMap);
while (twoDimIter.hasNext())
System.out.println(twoDimIter.next());

}
}

输出:

A2
A1
B2
B1

关于java - 二维映射中的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10484575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com