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

📅  最后修改于: 2023-12-03 15:37:36.406000             🧑  作者: Mango

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

在Java中,如果需要按照字符出现的顺序来打印字符及其频率,可以使用 LinkedHashMap 这个数据结构来实现。LinkedHashMap 是 HashMap 的一个子类,除了能够保持元素插入的顺序,还可以指定元素的顺序。

代码实现

下面是一个使用 LinkedHashMap 来实现按出现顺序打印字符及其频率的示例代码:

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

public class CharacterFrequency {

    public static void main(String[] args) {
        String str = "hello, world";

        Map<Character, Integer> charFreq = new LinkedHashMap<>();

        for (char ch : str.toCharArray()) {
            if (charFreq.containsKey(ch)) {
                charFreq.put(ch, charFreq.get(ch) + 1);
            } else {
                charFreq.put(ch, 1);
            }
        }

        for (Map.Entry<Character, Integer> entry : charFreq.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }
    }
}

代码解释:

  • 第 7 行,创建 LinkedHashMap 对象 charFreq,用于存储字符及其频率。
  • 第 9-14 行,遍历字符串 str 中的每一个字符,如果该字符在 charFreq 中已经存在,增加该字符的频率;否则,将该字符添加到 charFreq 中。
  • 第 16-20 行,遍历 LinkedHashMap charFreq 中的每一个 entry(即每一组键值对),打印出该字符以及其频率。
运行结果

运行上述代码,可以获得下面的运行结果:

h -> 1
e -> 1
l -> 3
o -> 2
, -> 1
  -> 1
w -> 1
r -> 1
d -> 1
总结

本文介绍了如何使用 LinkedHashMap 来按出现顺序打印字符及其频率。除了本例中的字符和字符串,这种实现方式也适用于其他数据类型的元素。如果需要根据其他的顺序来输出元素,只需要更改 LinkedHashMap 的构造函数或者指定元素的 Comparator 即可。