如何在 Java 8 和 Java 11 中正確讀取文件
來源:Medium 透過本教學課程,您將學習一些在 Java 8 和 Java 11 中處理和讀取大檔案時有用的技巧。在 Java 中讀取位於電腦磁碟上的檔案非常簡單。在 Java 8 及更高版本中,您可以使用Files類別來實現此目的。它是java.nio.file套件的一部分,該套件最初在 Java 7 中引入,以提供更有效的方式處理檔案和目錄。以下是如何使用Files類別在 Java 8 中讀取檔案的範例。import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FileReader {
public static void main(String[] args) {
try {
Path path = Paths.get("file.txt");
String content = Files.readString(path);
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
此範例使用Files.readAllLines()方法讀取檔案的所有行並將它們儲存在List<String> file 中。Paths.get()方法用於建立表示檔案的Path物件。您也可以使用Files.lines:
import java.io.IOException;
import java.nio.file.Paths;
import java.nio.file.Files;
public class FileReader {
public static void main(String[] args) {
try {
Files.lines(Paths.get("file.txt"))
.forEach(System.out::println);
} catch (IOException e) {
e.printStackTrace();
}
}
}
在 Java 11 中,要讀取文件,您可以使用readString()方法,它將整個文件作為字串讀取。這是如何使用它的範例。
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FileReader {
public static void main(String[] args) {
try {
Path path = Paths.get("file.txt");
String content = Files.readString(path);
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
在 Java 中處理大檔案時,記住一些準則很重要:
- 使用緩衝閱讀器。它允許您一次讀取大量數據,而不是一次讀取一個字元或一行。
- 使用較小的緩衝區大小:使用緩衝讀取器時,較小的緩衝區大小可以幫助減少記憶體使用量。
- 使用串流 API。串流 API 允許您分段讀取文件,而不是將整個文件載入到記憶體中。
- 使用並行線程來處理文件,特別是當文件很大時。
- 閱讀後關閉文件:這將有助於釋放資源。
- 使用try-with-resources語句在讀取檔案後自動關閉檔案。這可以確保即使在讀取文件時發生異常,文件也會關閉。
import java.io.IOException;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.util.List;
public class FileReader {
public static void main(String[] args) {
try (BufferedReader reader = Files.newBufferedReader(Paths.get("file.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
在此範例中,在 try-with-resources 語句內建立了BufferedReader對象,這確保了即使發生異常,退出區塊時也會自動關閉。所以,在Java中讀取大檔案時,最好使用緩衝讀取器、較小的緩衝區大小、串流API、並行流,並在讀取後關閉檔案。此外,使用try-with-resources語句可以幫助確保在發生異常時正確關閉檔案。
如何在 Java 中對 List 進行排序。Java中的各種列表排序方法
來源:FreeCodeCamp 這篇文章介紹了Java 中的各種清單排序方法: Collections.sort()、stream.sorted() 和List.sort()。 有時,資料需要按特定順序排列,以便更容易理解、尋找和處理。我們稱這個過程為排序。使用排序,您不僅可以按特定順序組織數據,還可以根據條件組織數據:例如,按數據類型,包括數字、字串和物件。Java 語言具有內建的排序方法,例如在Collections類別中。Java排序通常用於電子商務應用程序,其中用戶需要顯示產品清單。產品可以根據用戶設定的要求以多種方式排序,例如價格、評級、品牌等。例如,如果使用者想要查看按價格升序排列的所有產品,應用程式可以使用排序演算法按該順序排列產品。這樣,當用戶瀏覽產品時,他將能夠首先看到最便宜的產品,並據此做出購買決定。如何在 Java 中使用 Collections.Sort() 方法
在 Java 中對資料進行排序的最常見方法之一是使用Collections.sort()方法。預設情況下,它會按升序對清單進行排序。以下是使用Collections.sort()方法對整數清單進行排序的範例:import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<Integer>();
numbers.add(3);
numbers.add(1);
numbers.add(4);
numbers.add(2);
Collections.sort(numbers);
System.out.println("Sorted List: " + numbers);
}
}
上面的程式碼建立一個整數列表,向其中添加四個數字,對列表進行排序,然後將排序後的列表列印到控制台。它使用 Java 標準庫中的類別來執行操作,包括java.util.Collections、java.util.List和java.util.ArrayList。輸出如下:
//輸出排序列表:[1,2,3,4]
您也可以使用Collections.sort()方法對自訂物件清單進行排序。為此,您需要建立一個比較器並將其作為參數傳遞給Collections.sort()方法。比較器是實作java.util.Comparator介面的物件。它有一個可調用方法,compare(),它比較兩個物件並傳回一個整數,指示它們的相對順序。以下是如何使用比較器對自訂物件清單進行排序的範例:
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
people.add(new Person("Charlie", 20));
Collections.sort(people, new PersonComparator());
System.out.println("Sorted List: " + people);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return name + " (" + age + ")";
}
}
class PersonComparator implements java.util.Comparator<Person> {
@Override
public int compare(Person a, Person b) {
return a.getAge() - b.getAge();
}
}
上面顯示的程式碼建立一個Person物件列表,將多個Person物件加入列表中,使用自訂比較器 ( PersonComparator )對列表進行排序,然後列印排序後的列表。Person類別有兩個欄位:name和age,以及這些欄位的getter 方法。PersonComparator類別實作Comparator介面並重寫比較方法以按年齡 ( age ) 對Person物件進行排序。該程式的輸出將如下所示:
//輸出排序清單:[Charlie (20), Alice (25), Bob (30)]
當您擁有一組要按一個或多個欄位排序的物件時,最好使用Collections.sort() 方法。例如,如果您有Employee物件的集合,並且想要按姓氏對它們進行排序,則可以使用Collections.sort()方法並傳遞自訂比較器來比較Employee物件的姓氏。
如何在Java中使用List.Sort()方法
此方法按升序對清單進行排序。它的工作原理如下:import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(5, 3, 2, 4, 1);
numbers.sort(null);
System.out.println(numbers); // prints [1, 2, 3, 4, 5]
}
}
在main方法中,Arrays.asList建立一個稱為numbers的整數清單。然後,程式碼使用預設排序方法對該數字列表進行排序,因為null被傳遞給排序方法。最後,使用System.out.println方法將排序後的清單列印到控制台。輸出為[1, 2, 3, 4, 5]。 當您有需要排序的元素清單時,List.sort()非常有用。例如,如果您有一個字串列表,並且想要按字母順序對它們進行排序,則可以使用 List.sort ()方法來執行此操作。 List.sort()是List類別的實例方法,依照元素的自然順序或給定的Icomparer實作所確定的順序對元素進行排序。
如何在Java中使用stream.sorted()方法
在 Java 8 及更高版本中,您可以使用 Stream API 對清單進行排序。它提供了sorted方法,可用於對流的元素進行排序。以下是如何使用流對整數列表進行排序的範例:import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(5, 3, 2, 4, 1);
List<Integer> sortedList = numbers.stream().sorted().collect(Collectors.toList());
System.out.println(sortedList); // prints [1, 2, 3, 4, 5]
}
}
如您所見,使用stream()方法 將數字清單轉換為串流。然後呼叫sorted()方法對流中的元素進行排序。collect(Collectors.toList())方法用於將排序後的元素收集回列表中。結果是一個包含已排序元素的新清單。輸出為[1, 2, 3, 4, 5]。 當您有需要排序的元素流時,最好使用stream.sorted() 。例如,如果您有一個整數流,並且想要按升序對它們進行排序,那麼最好對此使用stream.Sorted ()方法。
GO TO FULL VERSION