簡體   English   中英

使用key = String和value = ArrayList創建映射<Double>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM