我正在处理具有非常大的数据集的csv文件。在读取文件的时候,我提取了第三名(BALANCE)';'使用while循环迭代从每行中分隔数值。我想将这些值(BALANCE)存储到listOF字符串中。我可以这样做。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.*;
public static void main(String[] args)throws IOException {
String filename = "bank-full.csv";
File file = new File(filename);
try {
Scanner inputStream = new Scanner(file);
inputStream.next();
int count=0;
while (inputStream.hasNext())
{
String data = inputStream.next();
String[] values = data.split(";");
double BALANCE = Double.parseDouble(values[2]);
System.out.println(BALANCE);
inputStream.close();
}
catch (FileNotFoundException ex) {
Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
答案 0 :(得分:1)
将双变量值存储到列表
像这样:
List<String> l = new ArrayList<String>();
l.add(Double.toString(42.0));
或者如果您正在尝试构建双精度列表,则使用包装类型,如下所示:
List<Double> l = new ArrayList<Double>();
l.add(42.0); // The double will be autoboxed as a Double.
答案 1 :(得分:0)
String filename = "bank-full.csv";
List<Double> list = new ArrayList<Double>();
File file = new File(filename);
try {
Scanner inputStream = new Scanner(file);
inputStream.next();
int count = 0;
while (inputStream.hasNext()) {
String data = inputStream.next();
String[] values = data.split(";");
double BALANCE = Double.parseDouble(values[2]);
list.add(BALANCE);
System.out.println(BALANCE);
inputStream.close();
}
}
catch (FileNotFoundException ex) {
Logger.getLogger(Demo.class.getName()).log(Level.SEVERE, null, ex);
}
}
答案 2 :(得分:0)
您可以初始化列表以保存类型&#39; Double&#39;或者您可以在将双打添加到列表之前将双精度转换为字符串。它或多或少取决于您计划如何使用列表。您是否会将这些信息作为双打从列表中存回?或者您是否允许用户以字符串的形式编辑值?只是几个例子。
答案 3 :(得分:0)
如果要将余额值保存在字符串列表中,可以直接将其添加到字符串中,如下所示:
List<String> balancesList = new ArrayList<String>();
在你的while循环中:
String data = inputStream.next();
String[] values = data.split(";");
balancesList.add(values[2]); //Just add it to the list here
因为 values[2]
中的余额值是字符串。
答案 4 :(得分:0)
尝试使用ArrayList或LinkedList:它们都扩展AbstractList,因此它们具有方法add(T),其中T可以是任何对象类型(在您的示例中为Double)。
在你的情况下,你应该做这样的事情:
List<Double> container = new ArrayList<Double>();
while (inputStream.hasNext()) {
String data = inputStream.next();
String[] values = data.split(";");
double BALANCE = Double.parseDouble(values[2]);
System.out.println(BALANCE);
container.add(BALANCE);
}
inputStream.close();
//now "container" contains all balance values
另外,你不应该在读取时关闭输入流,在while循环后关闭它。
如果您想以相反的顺序存储它们,请使用此add method,它允许您在列表的每个位置添加元素,因此您可以这样做:
container.add(container.size(), BALANCE);