📜  使用Java的LinkedHashMap按出现的顺序打印字符及其频率(1)

📅  最后修改于: 2023-12-03 14:49:48.676000             🧑  作者: Mango

使用Java的LinkedHashMap按出现的顺序打印字符及其频率

在Java中,你可以使用LinkedHashMap来按照插入顺序保存键值对。这意味着你可以使用LinkedHashMap来统计字符串中每个字符出现的频率,并按照插入顺序打印字符及其对应的频率。

下面是使用Java编写的一个示例程序,展示如何使用LinkedHashMap按出现的顺序打印字符及其频率。

import java.util.LinkedHashMap;
import java.util.Map;

public class CharacterFrequencyCounter {
    
    public static void printCharacterFrequency(String input) {
        // 创建一个LinkedHashMap来保存字符及其频率
        LinkedHashMap<Character, Integer> charFrequencyMap = new LinkedHashMap<>();
        
        // 遍历输入字符串,统计字符频率
        for (int i = 0; i < input.length(); i++) {
            char c = input.charAt(i);
            charFrequencyMap.put(c, charFrequencyMap.getOrDefault(c, 0) + 1);
        }
        
        // 打印字符及其频率
        for (Map.Entry<Character, Integer> entry : charFrequencyMap.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
    
    public static void main(String[] args) {
        String input = "Hello, world!";
        printCharacterFrequency(input);
    }
}

在上面的示例中,我们首先创建了一个LinkedHashMap来保存字符及其频率。然后,我们遍历输入字符串并使用put方法将字符添加到charFrequencyMap中。

在遍历过程中,我们使用getOrDefault方法来获取字符的当前频率,如果字符不存在,则返回默认值0。然后我们将字符的频率加1,并将其插入到charFrequencyMap中。

最后,我们使用entrySet方法遍历charFrequencyMap中的键值对,并打印字符及其对应的频率。注意,由于我们使用了LinkedHashMap,因此键值对的顺序将与字符在输入字符串中的顺序一致。

要运行上述代码,你需要将其保存为一个Java文件(例如CharacterFrequencyCounter.java),然后使用Java编译器(如javac)编译并运行它。运行后,你将看到以下输出:

H: 1
e: 1
l: 3
o: 2
,: 1
 : 1
w: 1
r: 1
d: 1
!: 1

以上就是使用Java的LinkedHashMap按出现的顺序打印字符及其频率的介绍。这种方法简单而高效,通过使用LinkedHashMap,你可以方便地获取每个字符在字符串中的频率,并保持字符的顺序不变。请根据你的特定需求使用此方法,并根据需要进行修改。