【问题标题】:How to store the return list so I can use it in another class?如何存储退货清单以便我可以在另一个班级使用它?
【发布时间】:2018-04-01 06:44:27
【问题描述】:
我创建了一个读取和存储 csv 文件的方法,其中 sn-p 读取 CSV 文件,然后将其放入 list<String>:
Scanner inputStream = new Scanner(file);
while (inputStream.hasNext()) {
List.add(inputStream.nextLine());
}
inputStream.close();
如何存储当前的List,以便将其用于同一类中的另一个方法?
【问题讨论】:
标签:
java
list
class
java.util.scanner
storage
【解决方案1】:
根据您的要求使用集合中的任何列表。
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;
}
}
【解决方案2】:
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...
列表是一个类变量,因此该类的任何函数都可以访问它