遍历List的时候不能删除元素。代码如下:
private final static Map<String, List<Map<String, String>>> newServerInfo
= new HashMap<String, List<Map<String, String>>>();
private final static Map<String, Long> newServerInfoDate = new HashMap<String, Long>();
for (Entry<String, Long> entry : newServerInfoDate.entrySet()) {
String key = entry.getKey();
long date = entry.getValue();
System.out.println(System.currentTimeMillis() - date + "---"+ outTimeNum * 1000);
if (System.currentTimeMillis() - date >= outTimeNum * 1000) {
newServerInfo.remove(key);
newServerInfoDate.remove(key);
if (newServerInfoDate.size() == 0)
break;
}
}
for循环遍历时不可删除,修改如下:
List<String> removeKey = new ArrayList<String>();
for (Entry<String, Long> entry : newServerInfoDate.entrySet()) {
String key = entry.getKey();
long date = entry.getValue();
System.out.println(System.currentTimeMillis() - date + "---"+ outTimeNum * 1000);
if (System.currentTimeMillis() - date >= outTimeNum * 1000) {
removeKey.add(key);
if (newServerInfoDate.size() == 0)
break;
}
}
for (String key : removeKey) {
newServerInfo.remove(key);
newServerInfoDate.remove(key);
}
遍历时,把需要删除的元素的key保存下来,遍历完成之后再删除。