junit 在Java中阅读文本文件并从中创建两个单独的列表

iecba09b  于 2022-11-11  发布在  Java
关注(0)|答案(3)|浏览(91)

因此,我需要为我的项目将一个文本文件读入java。但我有103个元素,我需要在一个列表中输入前100个元素,在另一个列表中输入后3个元素。然而,我不知道如何让两个不同的函数返回不同的元素,因为它会在我的JUnit测试中不断导致错误。我想知道是否有一种有效的方法来分离这两个列表。

ttvkxqim

ttvkxqim1#

您可以使用Java 8 Stream API读取文件,将其拆分为两个部分,并将结果收集到两个不同的列表中:

List<String> firstList = Files.lines(Paths.get("file.txt"))
                              .limit(100)
                              .collect(Collectors.toList());
List<String> secondList = Files.lines(Paths.get("file.txt"))
                               .skip(100)
                               .collect(Collectors.toList());
pgpifvop

pgpifvop2#

没有办法让一个函数返回两个原始对象。您应该创建两个不同的函数,或者创建一个新的类,其中的成员变量是数组,然后从函数返回该对象。
另一种方法是将数组值设置为函数本身的成员值。你能发布代码或者至少你的结构吗?

pbossiut

pbossiut3#

使用文件API Java 8:

您可以使用Files API方法来解决您的问题,如下所示:
您可以在此处的官方文档中探索Files API。

使用的方法:

  • 用文件的实际路径替换"path_of_the_file"
  • 我用过Files.readAllLines(),它会读取整个文件并创建一个List的String。
  • 从总数据列表中,您可以创建两个子列表,其中startIndex和endIndex范围适用于您的情况。
    请注意:

1.* 例如,文件中有10个元素,从A到J,对于子列表,我根据主数据使用了startIndex和endIndex。因此,List1包含前7个元素,List2包含后3个元素。*
1.* 您可以根据自己的需要使用子列表的startIndex和endIndex。*根据您的问题,文件中有103个元素,因此您可以使用下面的索引范围来获得两个列表。

  • 根据给出的问题:*
List<String> list1 = fullDataList.subList(0,100);

List<String> list2 = fullDataList.subList(100,103);

代码:

public class Test {
    public static void main(String[] args) throws IOException {
        List<String> fullDataList = Files.readAllLines(Path.of("path_of_the_file"));
        System.out.println("full data from file:: " + fullDataList);
        List<String> list1 = fullDataList.subList(0,7);
        List<String> list2 = fullDataList.subList(7,10);
        System.out.println("list1:: " + list1);
        System.out.println("list2:: " + list2);
    }
}

输出::

full data from file:: [A, B, C, D, E, F, G, H, I, J]
list1:: [A, B, C, D, E, F, G]
list2:: [H, I, J]

相关问题