所以我需要為我的專案將一個文本檔案讀入java。但是我有 103 個元素,我需要一個串列中的前 100 個元素和另一個串列中的后三個元素。但是,我不確定如何讓兩個不同的函式回傳不同的元素,因為它在我的 JUnit 測驗中不斷導致錯誤。我想知道是否有一種有效的方法來分隔這兩個串列。
uj5u.com熱心網友回復:
您可以使用 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());
uj5u.com熱心網友回復:
沒有辦法讓函式回傳兩個原始物件。您應該創建兩個不同的函式,或者創建一個具有陣列成員變數的新類,然后從函式中回傳該物件。
另一種方法是將陣列值設定為函式本身的成員值。您能否發布代碼或至少您的結構會有所幫助。
uj5u.com熱心網友回復:
使用檔案 API Java 8:
您可以使用 Files API 方法來解決您的問題,如下所示:
您可以在此處從官方檔案中探索 Files API 。
使用的方法:
- 替換
"path_of_the_file"為檔案的實際路徑。 - 我用過
Files.readAllLines(),它會讀取整個檔案并創建一個List字串。 - 從總資料串列中,您可以根據您的情況創建兩個具有 startIndex 和 endIndex 范圍的子串列。
請注意:
例如,我在檔案中有 10 個元素,從 A 到 J,對于子串列,我根據我的主要資料使用了 startIndex 和 endIndex。結果,List1 有前 7 個元素,而 list2 有后 3 個元素。
您可以根據您的要求將您的 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]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/516725.html
上一篇:React測驗庫|.toHaveAttribute()
下一篇:無限回圈測驗
