gpt4 book ai didi

java - 使用 key=String 和 value=ArrayList 创建一个映射

转载 作者:行者123 更新时间:2023-11-29 05:19:09 26 4
gpt4 key购买 nike

我想在 Java 类中创建一个 Map,其中的键是 String值的类型为 ArrayList<Double> .我的要求是,如果 String 等于某个值,我可以快速获取相应的列表。所有列表都是同一类中的私有(private)变量。谁能告诉我以下代码哪里错了?

编译错误:

error: <identifier> expected METRICS_LIST_MAP.put("CPUUtilization", CPUUtilizationList);

我的代码:

private  ArrayList<Double> CPUUtilizationList;
private ArrayList<Double> DiskReadOpsList;
private ArrayList<Double> DiskWriteOpsList;
private ArrayList<Double> DiskReadBytesList;
private ArrayList<Double> DiskWriteBytesList;
private ArrayList<Double> NetworkInList;
private ArrayList<Double> NetworkOutList;

Map<String, ArrayList<Double>> METRICS_LIST_MAP = new HashMap<String, ArrayList<Double>>();
METRICS_LIST_MAP.put("CPUUtilization", CPUUtilizationList);
METRICS_LIST_MAP.put("DiskReadOps", DiskReadOpsList);
METRICS_LIST_MAP.put("DiskWriteOps", DiskWriteOpsList);
METRICS_LIST_MAP.put("DiskReadBytes", DiskReadBytesList);
METRICS_LIST_MAP.put("DiskWriteBytes", DiskWriteBytesList);
METRICS_LIST_MAP.put("NetworkIn", NetworkInList);
METRICS_LIST_MAP.put("NetworkOut", NetworkOutList);

谢谢!

最佳答案

该代码在您的类(class)中的什么位置?它是否位于所有构造函数和方法之外?如果是这样,您不能在那里调用 put(...) 方法,而只能声明或声明并初始化变量和常量。此外,始终发布完整的错误消息。你的可能遗漏了重要的陈述。所以一定要在方法或构造函数 block 中调用 put(...) 方法调用。

您似乎还向 map 传递了空值,因为您似乎还没有初始化任何列表。请理解,您不是将变量 传递到 Map 中,而是将对象 传递到 Map 中,因此如果尚未为变量分配一个可行的对象,则将它们传递到 map 中什么也不做。

例如,

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

public class Foo {
// initialize all your lists first
private ArrayList<Double> cPUUtilizationList = new ArrayList<>();
private ArrayList<Double> diskReadOpsList = new ArrayList<>();
private ArrayList<Double> diskWriteOpsList = new ArrayList<>();
private ArrayList<Double> diskReadBytesList = new ArrayList<>();
private ArrayList<Double> diskWriteBytesList = new ArrayList<>();
private ArrayList<Double> networkInList = new ArrayList<>();
private ArrayList<Double> networkOutList = new ArrayList<>();

private Map<String, ArrayList<Double>> metricsListMap = new HashMap<String, ArrayList<Double>>();

public Foo() {
// insert into Map in constructor or method
metricsListMap.put("CPUUtilization", cPUUtilizationList);
metricsListMap.put("diskReadOps", diskReadOpsList);
metricsListMap.put("diskWriteOps", diskWriteOpsList);
metricsListMap.put("diskReadBytes", diskReadBytesList);
metricsListMap.put("diskWriteBytes", diskWriteBytesList);
metricsListMap.put("networkIn", networkInList);
metricsListMap.put("networkOut", networkOutList);
}
}

顺便说一句,您需要学习和使用 Java naming conventions .变量名应全部以小写字母开头,而类名应以大写字母开头。

遵循这些建议以及遵循良好的代码格式实践将使其他人(例如我们!)更好地理解您的代码,更重要的是,将使您 future 的自己更好地理解您 6 个月前的想法你写了代码。

关于java - 使用 key=String 和 value=ArrayList<Double> 创建一个映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25467466/

26 4 0