You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从已有LinkedList生成带频率统计的ModifiedSample列表

从LinkedList生成带频率的ModifiedSample列表解决方案

问题需求

需要从给定的LinkedList<Double>(示例:{2, 2, 3, 4, 5, 5, 5, 5, 6})生成LinkedList<ModifiedSample>,每个ModifiedSample对象包含对应数值和它的出现频率,调用printSampleSpace方法后输出指定格式的item与频率信息。

完整实现代码

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

public class Main {

    // 修改为静态内部类,让静态main方法可访问
    static class ModifiedSample {
        double item;
        int frequency;

        ModifiedSample(Double item, int frequency) {
            this.item = item;
            this.frequency = frequency;
        }
    }

    public static void main(String[] args) {
        LinkedList<Double> sampleList = new LinkedList<>();
        // 添加示例数据
        sampleList.add(2.0);
        sampleList.add(2.0);
        sampleList.add(3.0);
        sampleList.add(4.0);
        sampleList.add(5.0);
        sampleList.add(5.0);
        sampleList.add(5.0);
        sampleList.add(5.0);
        sampleList.add(6.0);

        LinkedList<ModifiedSample> modifiedSampleList = new LinkedList<>();

        // 用LinkedHashMap统计频率,保证顺序和原列表中首次出现的顺序一致
        LinkedHashMap<Double, Integer> frequencyMap = new LinkedHashMap<>();
        for (Double num : sampleList) {
            frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) + 1);
        }

        // 将统计结果转换为ModifiedSample列表
        for (Map.Entry<Double, Integer> entry : frequencyMap.entrySet()) {
            modifiedSampleList.add(new ModifiedSample(entry.getKey(), entry.getValue()));
        }

        // 调用打印方法
        printSampleSpace(modifiedSampleList);
    }

    // 实现printSampleSpace方法,按指定格式输出
    public static void printSampleSpace(LinkedList<ModifiedSample> sampleList) {
        for (ModifiedSample sample : sampleList) {
            System.out.printf("item: %.0f%n", sample.item);
            System.out.printf("frequency: %d%n", sample.frequency);
        }
    }
}

关键实现说明

  • 静态内部类修改:将ModifiedSample改为static class,因为静态的main方法无法直接实例化非静态内部类,这是Java语法的基础要求。
  • 频率统计:使用LinkedHashMap而非普通HashMap,目的是保留原列表中元素首次出现的顺序,确保输出顺序和示例一致。通过getOrDefault方法简化频率计数逻辑,避免空值判断。
  • 列表转换:遍历频率统计的Map,将每个键值对转换为ModifiedSample对象并加入目标列表。
  • 打印方法:使用printf格式化输出,%.0f确保double类型的整数数值以整数形式展示,符合示例输出格式。

输出结果

运行代码后,控制台将输出:

item: 2
frequency: 2
item: 3
frequency: 1
item: 4
frequency: 1
item: 5
frequency: 4
item: 6
frequency: 1

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:42:44