java map的高级用法技巧 请提供示例代码

本文介绍了Java中Map的五个高级用法技巧:compute进行原子操作、merge合并值、computeIfAbsent避免空值判断、forEach迭代和批量操作键值。这些技巧提升代码效率和可读性。
摘要由CSDN通过智能技术生成

Java 中的 Map 是一个非常强大和常用的数据结构,它提供了丰富的功能。以下是一些 Java 中 Map 的高级用法技巧示例代码:

1. 使用 compute 方法进行原子操作:

import java.util.HashMap;
import java.util.Map;

public class MapComputeExample {
    public static void main(String[] args) {
        Map<String, Integer> wordCountMap = new HashMap<>();

        // 使用 compute 方法计算单词出现次数
        String word = "apple";
        wordCountMap.compute(word, (key, value) -> (value == null) ? 1 : value + 1);

        System.out.println("Word count for '" + word + "': " + wordCountMap.get(word));
    }
}

2. 使用 merge 方法合并值:

import java.util.HashMap;
import java.util.Map;

public class MapMergeExample {
    public static void main(String[] args) {
        Map<String, Integer> wordCountMap = new HashMap<>();

        // 使用 merge 方法合并值
        String word = "apple";
        wordCountMap.merge(word, 1, Integer::sum);

        System.out.println("Word count for '" + word + "': " + wordCountMap.get(word));
    }
}

3. 使用 computeIfAbsent 避免空值判断:

import java.util.HashMap;
import java.util.Map;

public class MapComputeIfAbsentExample {
    public static void main(String[] args) {
        Map<String, StringBuilder> wordToBuilderMap = new HashMap<>();

        // 使用 computeIfAbsent 避免空值判断
        String word = "apple";
        wordToBuilderMap.computeIfAbsent(word, k -> new StringBuilder()).append(" is delicious");

        System.out.println(wordToBuilderMap.get(word));
    }
}

4. 使用 forEach 迭代 Map:

import java.util.HashMap;
import java.util.Map;

public class MapForEachExample {
    public static void main(String[] args) {
        Map<String, Integer> wordCountMap = new HashMap<>();
        wordCountMap.put("apple", 3);
        wordCountMap.put("banana", 2);
        wordCountMap.put("orange", 1);

        // 使用 forEach 迭代 Map
        wordCountMap.forEach((word, count) ->
                System.out.println("Word: " + word + ", Count: " + count));
    }
}

5. 使用 keySetvalues 进行批量操作:

import java.util.HashMap;
import java.util.Map;

public class MapBatchOperationsExample {
    public static void main(String[] args) {
        Map<String, Integer> wordCountMap = new HashMap<>();
        wordCountMap.put("apple", 3);
        wordCountMap.put("banana", 2);
        wordCountMap.put("orange", 1);

        // 使用 keySet 批量操作键
        wordCountMap.keySet().removeIf(word -> word.startsWith("a"));

        // 使用 values 批量操作值
        wordCountMap.values().replaceAll(count -> count * 2);

        System.out.println("Updated Map: " + wordCountMap);
    }
}

这些示例展示了一些 Map 的高级用法技巧,包括原子操作、合并值、避免空值判断、迭代、以及批量操作键和值。这些技巧可以帮助你更灵活地使用 Map,提高代码的简洁性和可读性。


1 什么意思

这段代码演示了使用 Java 的 Map 接口中的 compute 方法来计算单词出现的次数。以下是代码的解释:

  1. 创建一个 HashMap 实例:

    Map<String, Integer> wordCountMap = new HashMap<>();
    

    创建了一个 HashMap 实例,用于存储单词和它们的出现次数。

  2. 使用 compute 方法计算单词出现次数:

    String word = "apple";
    wordCountMap.compute(word, (key, value) -> (value == null) ? 1 : value + 1);
    

    compute 方法接收两个参数,第一个是要计算的键(这里是单词 “apple”),第二个是一个 BiFunction,用于计算新值。在这里,使用 lambda 表达式 (key, value) -> (value == null) ? 1 : value + 1,它的作用是:

    • 如果 valuenull,表示这是第一次出现该单词,将值设为 1。
    • 如果 value 不为 null,表示该单词已经出现过,将值加 1。
  3. 打印单词出现次数:

    System.out.println("Word count for '" + word + "': " + wordCountMap.get(word));
    

    打印了单词 “apple” 出现的次数。

这段代码的目的是维护一个记录单词出现次数的 Map,并通过 compute 方法对单词的出现次数进行计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值