簡體   English   中英

如何使用Java從數據集中檢索值

[英]How to retrieve values from a dataset in Java

我有一個在兩列(x和y)中具有值的數據集,

1974  100   
1985  150
1987  120
1999  123

對於每個x,我想獲得y的值。 如何在Java中執行此操作? 我有一個從哪里開始的想法,但沒有一個如何繼續的想法。 我創建了一個叫做類型的數據集的數據的動態參數,因為X列是今年我在想這樣做這樣的事情;

data().get( getYear() + getDayOfYear(date())/365 )  

這是正確的思維方式還是我完全走錯了路? 另外,如果我不使用java.util.Date,我將如何獲得每個x的y值?

如果我正確理解了您的問題,則您有一個數據集,可以將每年的數據映射到該年發生某事的次數。 如果您的數據集在任何給定年份都恰好包含y(即1986年沒有兩行),那么您想要的是java.util.Collection框架中的Map。 像這樣:

Map<Integer, Integer> dataset = new HashMap<>();  // my syntax assumes you have java7+
dataset.add(1974,100);
dataset.add(1985,150);
…

檢索特定年份的數據,使用

int numberOfEvents = dataset.get(theYear);

這里有一些很好的參考,可為您指明前進的方向:

如您所問,這是如何從文本文件加載此方法:

public class DataSetLoader {
   public static void main(String []args){
      Map<Integer,Integer> myData = loadData("/path/to/my/data.txt");
   }

   // load the dataset; may return an empty or partly filled map if there is an error
   private static Map<Integer,Integer> loadData(String filename) {
      Map<Integer,Integer> dataset = new HashMap<>();
      try (BufferedReader r = new BufferedReader(new FileReader(filename))) {
         String s;
         while ((s = r.readLine()) != null) {
            String[] columns = s.split("\\s+");
            Integer year = Integer.valueOf(columns[0]);
            Integer data = Integer.valueOf(columns[1]);
            System.out.println("Adding ("+year+","+data+")");
            dataset.put(year,data);
         }
      } catch (Exception ex) {
         // this is not great exception handling, but it will let you know about 
         // any problems while debugging
         ex.printStackTrace();
      }
      return dataset;
   }  

}

如果您的數據不干凈,則Integer.valueOf()也可能會引發NumberFormatException-您可能希望顯式地捕獲它。 最終,您希望刪除所有捕獲的異常處理,並用catch子句替換FileNotFoundExceptionIOException ,以及NumberFormatException

使用HashMap ...您可以將name:value對放入地圖中,並通過名稱進行檢索

http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

HashMap<String,String> map = new HashMap<String,String>();
map.put(name,value);

String retValue =map.get(name);

日期可能是您的價值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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