因此,我需要为我的项目将一个文本文件读入java。但我有103个元素,我需要在一个列表中输入前100个元素,在另一个列表中输入后3个元素。然而,我不知道如何让两个不同的函数返回不同的元素,因为它会在我的JUnit测试中不断导致错误。我想知道是否有一种有效的方法来分离这两个列表。
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());
pgpifvop2#
没有办法让一个函数返回两个原始对象。您应该创建两个不同的函数,或者创建一个新的类,其中的成员变量是数组,然后从函数返回该对象。另一种方法是将数组值设置为函数本身的成员值。你能发布代码或者至少你的结构吗?
pbossiut3#
使用文件API Java 8:
您可以使用Files API方法来解决您的问题,如下所示:您可以在此处的官方文档中探索Files API。
使用的方法:
"path_of_the_file"
Files.readAllLines()
List
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]
3条答案
按热度按时间ttvkxqim1#
您可以使用Java 8 Stream API读取文件,将其拆分为两个部分,并将结果收集到两个不同的列表中:
pgpifvop2#
没有办法让一个函数返回两个原始对象。您应该创建两个不同的函数,或者创建一个新的类,其中的成员变量是数组,然后从函数返回该对象。
另一种方法是将数组值设置为函数本身的成员值。你能发布代码或者至少你的结构吗?
pbossiut3#
使用文件API Java 8:
您可以使用Files API方法来解决您的问题,如下所示:
您可以在此处的官方文档中探索Files API。
使用的方法:
"path_of_the_file"
。Files.readAllLines()
,它会读取整个文件并创建一个List
的String。请注意:
1.* 例如,文件中有10个元素,从A到J,对于子列表,我根据主数据使用了startIndex和endIndex。因此,List1包含前7个元素,List2包含后3个元素。*
1.* 您可以根据自己的需要使用子列表的startIndex和endIndex。*根据您的问题,文件中有103个元素,因此您可以使用下面的索引范围来获得两个列表。
代码:
输出::