我想在Java类中创建一个Map,其中键为String
,值为ArrayList<Double>
。我的要求是,如果String等于某个值,我可以快速拿起相应的列表。所有列表都是同一类中的私有变量。
有人可以告诉我以下代码中哪里出错了?
我收到了编译错误:
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);
谢谢!
答案 0 :(得分:3)
您班上的代码在哪里?它位于所有构造函数和方法之外吗?如果是这样,你不能调用put(...)方法,而只能声明或声明和初始化变量和常量。此外,始终发布完整的错误消息。你的可能会遗漏重要的陈述。因此,请务必在方法或构造函数块中调用put(...)
方法调用。
您似乎也将空值传递到地图中,因为您似乎尚未初始化任何列表。要知道你没有将变量传递给Map而是传递对象,所以如果没有为变量分配一个可行的对象,那么将它们传递到地图中什么都不做。 / p>
如,
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。变量名都应以较低的字母开头,而类名以大写字母开头。
遵循这些建议以及遵循良好的代码格式化实践将允许其他人(例如我们!)更好地理解您的代码,更重要的是,将允许您未来的自我更好地理解您在6个月前的想法你写了代码。