将双变量值存储到列表<string> </string>中

时间:2015-02-26 08:11:02

标签: java file csv filereader opencsv

我正在处理具有非常大的数据集的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);
        }
    }
   }

5 个答案:

答案 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)

尝试使用ArrayListLinkedList:它们都扩展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);