【问题标题】:Adding items to an array list of an array list将项目添加到数组列表的数组列表
【发布时间】:2017-11-28 03:19:55
【问题描述】:
我想知道如何将项目(从逐项读取文件输入的扫描器)添加到数组的数组列表中。现在 Eclipse 告诉我我的 .add 不起作用,我假设这是因为数组的数组列表。请帮忙!
public static void readInputFile(String fileName,
ArrayList<ArrayList<String> > fileByLine) throws IOException {
try {
FileInputStream fileInput = new FileInputStream(fileName);
Scanner fileIn = new Scanner(new FileReader(fileName));
String fileWord = fileIn.next();
while (fileIn.hasNext()) {
fileByLine.add(fileWord);
fileWord = fileIn.next();
}
}
catch (IOException ex) {
System.out.println("Error reading file.");
}
}
【问题讨论】:
标签:
java
arrays
list
file
fileinputstream
【解决方案1】:
这显然行不通。您正在将一个字符串添加到一个期望 ArrayList 元素(不是字符串元素)的 ArrayList 中。最好这样做:
try {
FileInputStream fileInput = new FileInputStream(fileName);
Scanner fileIn = new Scanner(new FileReader(fileName));
String fileWord = fileIn.next();
ArrayList<String> newSubList = new ArrayList<>();
while (fileIn.hasNext()){
fileWord = fileIn.next();
//Adds to this specific Arraylist:
newSubList.add(fileWord);
}
//Adds to the outermost ArrayList after loop
fileByLine.add(newSubList);
}
catch (IOException ex) {
System.out.println("Error reading file.");
}
我希望这会有所帮助...快乐的编码!
【解决方案2】:
你可以做到的。
先向父列表添加一个新列表,然后添加项目
public static void readInputFile(String fileName,
ArrayList<ArrayList<String>> fileByLine) throws IOException {
try {
FileInputStream fileInput = new FileInputStream(fileName);
Scanner fileIn = new Scanner(new FileReader(fileName));
String fileWord = fileIn.next();
ArrayList<String> list = new ArrayList<>(); //list of items
while (fileIn.hasNext()) {
fileWord = fileIn.next();
list.add(fileWord); //adding item to list
}
fileByLine.add(list); //add list with list to father list
} catch (IOException ex) {
System.out.println("Error reading file.");
}
}