【发布时间】:2020-03-25 01:19:37
【问题描述】:
我有一个在 Eclipse 中编写的 Java 程序,其目标是获取存储在 Excel 中的数据值并将其放入相关图中,以便使用 Nebula 插件进行假设检验。我正在使用缓冲读取器导入我的数据,并且我已经能够使用封装和构造函数获取我想要返回到控制台的数据。我的问题:是否有可能/实际将此输出存储到数组中以便我可以绘制它?我的想法是初始化数组,然后以某种方式通过方法存储输出,但我一直坚持如何去做......
编辑:我应该澄清一下——我问的是如何将我的对象转移到并行数组中。这是好习惯吗?如果是这样,如何才能最有效地做到这一点?
一些代码(它很长,但我不想留下任何关键的东西):
public class CovidPlots {
public static void main(String[] args) {
//Data source
List<Book> stocks = readBooksFromCSV("COVID_DJI.csv");
for (Book b : stocks) {
System.out.println(b);
}
private static List<Book> readBooksFromCSV(String fileName) {
List<Book> stocks = new ArrayList<>();
Path pathToFile = Paths.get("C:\\Users\\zrr81\\Downloads\\COVID-19_Analysis\\COVID_DJI.csv");
//Try/catch IO exception for input file stream
try (BufferedReader br = Files.newBufferedReader(pathToFile, StandardCharsets.US_ASCII)) {
//Initialize counter to skip header
int count = 0;
String line = br.readLine();
while(line != null) {
//Tell the reader to split the text when it hits the delimiter
String[] attributes = line.split(",");
Book book = createBook(attributes);
stocks.add(book);
count ++;
line = br.readLine();
}
}
catch (IOException e) {
e.printStackTrace();
}
return stocks;
}
//Create output arrays
String[] days;
double [] openers;
double[] closers;
//Import data into array "Book"
private static Book createBook(String[] metadata) {
String day = metadata[0];
double opener = Double.parseDouble(metadata[1]);
double closer = Double.parseDouble(metadata[4]);
return new Book(day, opener, closer);
}
}
//Book class file (separate file in my package)
class Book {
//Define spreadsheet "Book"
private String date;
private double opener;
private double closer;
// All-args constructor, getters, setters and toString()
// left out for brevity
}
【问题讨论】:
-
“是否有可能/实际将此输出存储到数组中以便我可以绘制它?” 你为什么不能从你拥有的“书”对象中绘制它?您希望数据是什么数组/格式,以使“绘图”更容易?
-
仅供参考: 并行数组是一个非常糟糕的主意。使用单个对象数组。你已经以
List<Book>的形式拥有了,所以......你又想完成什么? -
@Andreas Parallel arrays 正是我要问的(对不起,应该使用这个术语 - 我会编辑我的问题)。你能详细说明为什么这是一个坏主意吗?随意回答,这回答了我的问题。
-
查看Why use parallel arrays in Java? 或Wikipedia article 的答案,如果您不需要重新排列数据,例如对它进行排序,你就会明白为什么这是一个坏主意。
标签: java arrays eclipse encapsulation