sna*_*ile 4 java iterator iterable hashmap treemap
我有一个包含TreeMap的MyMap类.(说它是狗的集合,键是字符串).
public class MyMap {
private TreeMap<String, Dog> map;
...
}
Run Code Online (Sandbox Code Playgroud)
我想用for-each循环将MyMap迭代.我知道如果我的类是LinkedList包装器我会怎么做:
public class MyList implements Iterable<Dog> {
private LinkedList<Dog> list;
...
public Iterator<Dog> iterator() {
return list.iterator();
}
}
Run Code Online (Sandbox Code Playgroud)
但是这样的解决方案不适用于TreeMap,因为TreeMap没有迭代器().那么如何才能使MyMap可迭代?
除了MyMap之外,同样的问题包含了HashMap(而不是TreeMap).
谢谢.
public Iterator<Dog> iterator() {
return map.values().iterator();
}
Run Code Online (Sandbox Code Playgroud)
这是因为你只能迭代地图的键或值,而不是地图本身
通常你可以这样做:
for( Object value : mymap.values() ){
System.out.println(value);
}
Run Code Online (Sandbox Code Playgroud)
所以,我建议的是:你的Map需要有一个可迭代的吗?如果你只是想要获得价值......或者密钥本身,那就不是了.
另外,请考虑使用Google的转发集合,例如ForwardingList