在Java中的Arraylist中创建Arraylist
这是我的第一篇帖子,如果我把事情搞砸了,或者我不够清楚,我很抱歉。我已经在网上论坛上浏览了好几个小时,花了更多的时间试图为自己找到答案 我正在从一个文件中读取信息,我需要一个循环,该循环每次通过时都会创建一个ArrayList在Java中的Arraylist中创建Arraylist,java,arraylist,Java,Arraylist,这是我的第一篇帖子,如果我把事情搞砸了,或者我不够清楚,我很抱歉。我已经在网上论坛上浏览了好几个小时,花了更多的时间试图为自己找到答案 我正在从一个文件中读取信息,我需要一个循环,该循环每次通过时都会创建一个ArrayList static ArrayList<String> fileToArrayList(String infoFromFile) { ArrayList<String> smallerArray = new ArrayList<String
static ArrayList<String> fileToArrayList(String infoFromFile)
{
ArrayList<String> smallerArray = new ArrayList<String>();
//This ArrayList needs to be different every time so that I can add them
//all to the same ArrayList
if (infoFromFile != null)
{
String[] splitData = infoFromFile.split(":");
for (int i = 0; i < splitData.length; i++)
{
if (!(splitData[i] == null) || !(splitData[i].length() == 0))
{
smallerArray.add(splitData[i].trim());
}
}
}
静态ArrayList文件到ArrayList(字符串infoFromFile)
{
ArrayList smallerArray=新的ArrayList();
//这个ArrayList每次都需要不同,以便我可以添加它们
//都到同一个ArrayList
if(infoFromFile!=null)
{
字符串[]splitData=infoFromFile.split(“:”);
对于(int i=0;i
我需要这样做的原因是,我正在为一个学校项目创建一个应用程序,该应用程序从分隔的文本文件中读取问题。我之前有一个循环,每次从文本中读取一行。我将把该字符串插入此程序
如何使ArrayList smallerArray在每次使用此方法时都成为单独的ArrayList
我需要这个,这样我就可以拥有每个ArrayList的ArrayList-
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;
}
}
import java.io.IOException;
导入java.nio.file.Files;
导入java.nio.file.path;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入java.util.stream.stream;
公共类SimpleFileReader{
私有静态最终字符串DELEMETER=“:”;
私有字符串文件名=null;
公共SimpleFileReader(){
超级();
}
公共SimpleFileReader(字符串文件名){
超级();
setFilename(文件名);
}
公共字符串getFilename(){
返回文件名;
}
public void setFilename(字符串文件名){
this.filename=文件名;
}
公共列表getRowSet()引发IOException{
列表行=新建ArrayList();
try(Stream=Files.line(path.get(filename))){
stream.forEach(row->rows.add(Arrays.asList(row.split(DELEMETER)));
}
返回行;
}
}
下面是上述代码的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();
}
}
}
import static org.junit.jupiter.api.Assertions.fail;
导入java.io.IOException;
导入java.util.List;
导入org.junit.jupiter.api.Test;
公共类SimpleFileReaderTest{
公共SimpleFileReaderTest(){
超级();
}
@试验
public void testFileReader(){
试一试{
SimpleFileReader reader=新的SimpleFileReader(“c:/temp/sample input.txt”);
List rows=reader.getRowSet();
int expectedValue=3;//示例文件中的实际行数
int actualValue=rows.size();//列表中的行数
if(实际值!=预期值){
失败(String.format(“行计数的预期值为%d,而获得的值为%d”,expectedValue,actualValue));
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
拆分数据[i]==null
不是必需的。它从来都不是null
。此外,实际的问题是什么?你的问题中没有问号。你的问题是什么?添加它可以使条件始终得到验证。它应该被修改以测试正确的条件。你谈论读取文件,但我在你的示例中看到没有文件访问权限。你也可以这样做列表列表->ArrayList ListofSmallerList=new ArrayList();