这是我的第一篇文章,如果我搞砸了或者不够清楚,对不起。我已经在网上论坛中寻找了几个小时,并花了更多时间试图自己解决。
我正在从文件中读取信息,并且需要一个循环,每次循环都会创建一个ArrayList。
TestInit()
我需要这样做的原因是,我正在为学校项目创建一个应用程序,该应用程序从定界的文本文件中读取问题。我之前有一个循环,一次从文本中读取一行。我将字符串插入该程序。
每次通过此方法时,如何使ArrayList较小的ArrayList成为单独的ArrayList?
我需要这个,所以我可以拥有每个ArrayList的ArrayList
答案 0 :(得分:0)
这是您打算做什么的示例代码-
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
public class SimpleFileReader {
private static final String DELEMETER = ":";
private String filename = null;
public SimpleFileReader() {
super();
}
public SimpleFileReader(String filename) {
super();
setFilename(filename);
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public List<List<String>> getRowSet() throws IOException {
List<List<String>> rows = new ArrayList<>();
try (Stream<String> stream = Files.lines(Paths.get(filename))) {
stream.forEach(row -> rows.add(Arrays.asList(row.split(DELEMETER))));
}
return rows;
}
}
这是上面代码的JUnit测试-
import static org.junit.jupiter.api.Assertions.fail;
import java.io.IOException;
import java.util.List;
import org.junit.jupiter.api.Test;
public class SimpleFileReaderTest {
public SimpleFileReaderTest() {
super();
}
@Test
public void testFileReader() {
try {
SimpleFileReader reader = new SimpleFileReader("c:/temp/sample-input.txt");
List<List<String>> rows = reader.getRowSet();
int expectedValue = 3; // number of actual lines in the sample file
int actualValue = rows.size(); // number of rows in the list
if (actualValue != expectedValue) {
fail(String.format("Expected value for the row count is %d, whereas obtained value is %d", expectedValue, actualValue));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}