@Test
public void testMap(){
Map<Integer, String> map = new HashMap<>();
for (int i = 0; i <10; i++){
//putIfAbsent 使得我们不用写是否为 null 值的检测语句
map.putIfAbsent(i, "val_" + i);
}
//-------1------maps不支持流。然而现在maps包括了许多新的非常有用的方法用于执行通用任务:
//forEach使用consumer来对map中的每个元素进行操作,执行通用任务。
map.forEach((key, value) -> System.out.print(key + " : " +value + "; ") );
System.out.println();
//----------2-------------------使用功能性函数在map里执行代码:
//将key为3对应的值(val_3)改为 "val_3"+3*10 = val_330
map.computeIfPresent(3, (key, val) -> val + key*10);
System.out.println(map.get(3)); //val_330
//将key为9对应的值(val_9)改为 null
map.computeIfPresent(9, (key, val) -> null);
System.out.println(map.containsKey(9)); // false 相当于从map中移除了此项
//将key为23对应的值(null)改为 "val_23"
map.computeIfAbsent(23, num -> "val_" + num);
System.out.println(map.containsKey(23)); //true
map.forEach((key, value) -> System.out.print(key + " : " +value + "; ") );
System.out.println();
map.put(3, null);
//如果key为3对应的值为null, 将其值改为"bam"
map.computeIfAbsent(3, num -> "bam");
System.out.println(map.get(3)); // bam
//---------3--------------删除给定键所对应的元素。删除操作还需要满足给定的值需要和map中的值相等:
map.remove(3, "val3");
System.out.println(map.get(3));; // bam
map.remove(3, "bam");
System.out.println(map.get(3));; // null
//----------4--------其他一些帮助性方法:
map.getOrDefault(44, "404 not found");
//---------------5----------------合并map中的实体
//此时map.get(9)=null
map.merge(9, "val999", (value, newValue) -> value.concat(newValue));
System.err.println(map.get(9));// val999
map.merge(9, "concat", (value, newValue) -> value.concat(newValue));
System.err.println(map.get(9));// val999concat
}
Java8新特性——Map的新方法
最新推荐文章于 2025-07-01 16:20:33 发布
