Java中是否有任何容器允许我们按键使用迭代器,哪些容器可以同时使用下一个元素和前一个元素(如c ++中的地图)?
P.S。抱歉我的英文
答案 0 :(得分:9)
NavigableMap最接近std::map。最常用的实现是TreeMap。
NavigableMap 包含许多方法,可以按条目的排序顺序进行迭代。第一个循环遍历所有元素,而第二个循环则限制在子范围内。
NavigableMap<String, Integer> map = ...;
for (Map.Entry<String, Integer> entry : map.entrySet()) {
// ...
}
for (Map.Entry<String, Integer> entry
: map.subMap("bar", "foo").entrySet()) {
// ...
}
也可以从开头到某个条目,或从某个条目到结尾进行迭代。看看以下方法:
在C ++中,迭代器也用于许多其他用例。 Java 迭代器非常不同,不能与变异操作结合使用。在许多情况下,您必须使用查找而不是迭代。例如,如果使用当前条目的键,则以下方法返回上一个和下一个条目(按排序顺序):
答案 1 :(得分:3)
您可以查看at the official documentation here
我认为您可以使用迭代器遍历地图的键集来实现您想要的效果。示例代码:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class Test {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<Integer, String>() {
{
put(1, "One");
put(2, "Two");
put(3, "Three");
put(4, "Four");
put(5, "Five");
}
};
Iterator<Integer> iter = map.keySet().iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
}
答案 2 :(得分:-1)
LinkedList类有一个listIterator方法,可以帮助你在两个方向上遍历