如何存储返回列表,以便我可以在另一个类中使用它?

时间:2018-04-01 06:44:27

标签: java list class java.util.scanner storage

我创建了一个读取和存储csv文件的方法,其中的一个代码段读取CSV文件,然后将其放入list<String>

Scanner inputStream = new Scanner(file);
while (inputStream.hasNext()) {
         List.add(inputStream.nextLine());
}
inputStream.close();

如何存储当前List,以便我可以将它用于同一类中的另一种方法?

2 个答案:

答案 0 :(得分:2)

根据您的要求在集合中使用任何列表。

Arraylist 更适合存储和访问数据。 LinkedList 更适合处理数据。所以明智地选择。在这里,我将使用ArrayList

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class ParseCSVFile {

    public static void main(String[] args) {

        // Get the csv file path
        String fileName = "yourCsvFile.csv";

        // method returns list of strings in csv file
        List<List<String>> lines = parseCsvFile(fileName);

        // Method to print the contents
        printCSVListContents(lines);

    }

    /**
     * Prints the CSV list contents.
     *
     * @param listOfLines the list of lines
     */
    private static void printCSVListContents(final List<List<String>> listOfLines) {
        int initialLineNo = 1;
        for (List<String> line : listOfLines) {
            int columnNo = 1;
            for (String contentsOfLine : line) {
                System.out.println("Line Number: " + initialLineNo + " Column Number: " + columnNo + " Contents: " +  contentsOfLine);
                columnNo++;
            }
            initialLineNo++;
        }
    }

    /**
     * Parses the CSV file.
     *
     * @param inputLineNumber the file name
     * @return the list
     */
    private static List<List<String>> parseCsvFile(final String inputLineNumber) {
        File file = new File(inputLineNumber);

        // To provide a 2-dimensional array of strings
        List<List<String>> lineList = new ArrayList<>();
        Scanner scannerStream;

        try {
            scannerStream = new Scanner(file);
            while (scannerStream.hasNext()) {
                String line = scannerStream.next();
                String[] values = line.split(",");
                lineList.add(Arrays.asList(values));
            }
            scannerStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        return lineList;

    }
     }

答案 1 :(得分:0)

public class Something { 
   private ArrayList<String> list = new ArrayList<>();
   ....
   Scanner inputStream = new Scanner(file);
   while (inputStream.hasNext()) {
            list.add(inputStream.nextLine());
   }
   inputStream.close();

... use the list object as you wish...

列表是一个类变量,因此该类的任何函数都可以访问它

相关问题