[英]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子句替換FileNotFoundException
, IOException
,以及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.