在Java中的数组列表中创建Arrylist

时间:2019-03-19 15:31:01

标签: java arraylist

这是我的第一篇文章,如果我搞砸了或者不够清楚,对不起。我已经在网上论坛中寻找了几个小时,并花了更多时间试图自己解决。

我正在从文件中读取信息,并且需要一个循环,每次循环都会创建一个ArrayList。

TestInit()

我需要这样做的原因是,我正在为学校项目创建一个应用程序,该应用程序从定界的文本文件中读取问题。我之前有一个循环,一次从文本中读取一行。我将字符串插入该程序。

每次通过此方法时,如何使ArrayList较小的ArrayList成为单独的ArrayList?

我需要这个,所以我可以拥有每个ArrayList的ArrayList

1 个答案:

答案 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();
        }
    }
}