我希望在我的地图列表到达结束时执行一个方法。这是我的代码:
Map<String,?> keys = prefs.getAll();
if (keys != null) {
for(Map.Entry<String,?> entry : keys.entrySet()){
Log.d("allmyprefs", entry.getKey() + " " + entry.getValue().toString());
}
Log.d("allmyprefs", "the method to execut when the map reach end");
}
我在调试日志中得到了所有关键和值都报告正常但我不知道当地图列表到达最后一个键时是否有办法执行其他操作。提前致谢
答案 0 :(得分:1)
要做到这一点,你需要重新定义你的循环,可能是这样的迭代器:
Map<String,?> keys = prefs.getAll();
Iterator iter = keys.getIterator();
if (keys != null) {
while (iter.hasNext()) {
Map.Entry<String,?> entry = iter.next();
Log.d("allmyprefs", entry.getKey() + " " + entry.getValue().toString());
if (!iter.hasNext()) { // The Map is on the last item
...
}
}
}
已编辑:嗯,这假设您想在退出循环之前对该项目执行某些操作,如果没有,则其他用户的答案有效:)
答案 1 :(得分:1)
只需在for循环中添加即可 :)
现在您可能会或可能不会看到Log语句不按顺序,因为该操作在系统中不是原子的。 (它等待缓冲区,后台线程将日志数据刷出应用程序上下文)