Map 遍历中删除元素
采用 迭代器iterator 来进行遍历操作
HashMap<Integer,Integer> map = new HashMap();
map.put(1, 1);
map.put(2, 2);
map.put(3, 3);
map.put(4, 4);
map.put(5, 5);
map.put(6, 6);
map.put(7, 7);
// 可以试keyset entryset values
// Set<Integer> integers = map.keySet();
// Collection<Integer> values = map.values();
Set<Map.Entry<Integer, Integer>> entries = map.entrySet();
entries.forEach(e -> {
System.out.println(e);
});
System.out.println("=================================");
int i = 0;
Iterator<Map.Entry<Integer,Integer>> iterator = entries.iterator();
while (iterator.hasNext()){
Integer next = iterator.next().getKey();
if (i++ >= 5){
iterator.remove();
}
}
map.forEach((k,v) -> System.out.println(k +""+ v));
map排序 可使用LinkedHashMap进行处理
public Map<String, Integer> sortMap(Map<String, Integer> map) {
//利用Map的entrySet方法,转化为list进行排序
List<Map.Entry<String, Integer>> entryList = new ArrayList<>(map.entrySet());
//利用Collections的sort方法对list排序
Collections.sort(entryList, (o1, o2) -> {
//倒序处理
return o2.getValue() - o1.getValue();
});
//遍历排序好的list,一定要放进LinkedHashMap,因为只有LinkedHashMap是根据插入顺序进行存储
LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<String, Integer>();
for (Map.Entry<String,Integer> e : entryList) {
linkedHashMap.put(e.getKey(),e.getValue());
}
return linkedHashMap;
}