如何迭代Map以将内容从特定索引写入另一个索引。
Map<String, Integer> map = new LinkedHashMap<>();
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
for (String string : map.keySet()) {
bufferedWriter.write(string + " " + map.get(string));
bufferedWriter.newLine();
}
bufferedWriter.close();
我有两个int值,from和to,我现在怎么写10到100?有没有可能用索引迭代地图?
答案 0 :(得分:9)
LinkedHashMap
保留插入条目的顺序。因此,您可以尝试使用索引创建键列表并循环:
List<String> keyList = new ArrayList<String>(map.keySet());
for(int i = fromIndex; i < toIndex; i++) {
String key = keyList.get(i);
String value = map.get(key);
...
}
另一种不创建列表的方法:
int index = 0;
for (String key : map.keySet()) {
if (index++ < fromIndex || index++ > toIndex) {
continue;
}
...
}
答案 1 :(得分:1)
您可以使用该循环增加int变量:
int i = - 1;
for (String string : map.keySet()) {
i++;
if (i < 10) {
// do something
} else {
// do something else
}
bufferedWriter.write(string + " " + map.get(string)); // otherwise...
bufferedWriter.newLine();
}
答案 2 :(得分:0)
这有点老了,但是对于那些想使用Map.forEach
的人来说可以达到以下效果:
AtomicInteger i = new AtomicInteger(0);
map.forEach((k, v) -> {
int index = i.getAndIncrement();
});
答案 3 :(得分:0)
还有一个简单的解决方案:
{{1}}
你有键、值、索引和大小。