[英]Create a map with key=String and value=ArrayList<Double>
我想在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);
謝謝!
你班上的代碼在哪里? 它位於所有構造函數和方法之外嗎? 如果是這樣,你不能調用put(...)方法,而只能聲明或聲明和初始化變量和常量。 此外,始終發布完整的錯誤消息。 你的可能會遺漏重要的陳述。 所以一定要在方法或構造函數塊中調用put(...)
方法調用。
您似乎也將空值傳遞到地圖中,因為您似乎尚未初始化任何列表。 要知道你沒有將變量傳遞給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命名約定 。 變量名都應以較低的字母開頭,而類名以大寫字母開頭。
遵循這些建議以及遵循良好的代碼格式化實踐將允許其他人(例如我們!)更好地理解您的代碼,更重要的是,將允許您的未來自我更好地理解您在6個月前撰寫碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.