JavaRush /Java Blog /Random-TW /喝咖啡休息#196。如何在Java 8和Java 11中正確讀取檔案。如何在Java中對清單進行排序,在Java中...

喝咖啡休息#196。如何在Java 8和Java 11中正確讀取檔案。如何在Java中對清單進行排序,在Java中對清單進行排序的各種方法

在 Random-TW 群組發布

如何在 Java 8 和 Java 11 中正確讀取文件

來源:Medium 透過本教學課程,您將學習一些在 Java 8 和 Java 11 中處理和讀取大檔案時有用的技巧。在 喝咖啡休息#196。 如何在Java 8和Java 11中正確讀取檔案。如何在Java中對清單進行排序,在Java中對清單進行排序的各種方法 - 1Java 中讀取位於電腦磁碟上的檔案非常簡單。在 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 中處理大檔案時,記住一些準則很重要:
  1. 使用緩衝閱讀器。它允許您一次讀取大量數據,而不是一次讀取一個字元或一行。
  2. 使用較小的緩衝區大小:使用緩衝讀取器時,較小的緩衝區大小可以幫助減少記憶體使用量。
  3. 使用串流 API。串流 API 允許您分段讀取文件,而不是將整個文件載入到記憶體中。
  4. 使用並行線程來處理文件,特別是當文件很大時。
  5. 閱讀後關閉文件:這將有助於釋放資源。
  6. 使用try-with-resources語句在讀取檔案後自動關閉檔案。這可以確保即使在讀取文件時發生異常,文件也會關閉。
下面是使用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() 喝咖啡休息#196。 如何在 Java 8 和 Java 11 中正確讀取檔案。如何在 Java 中對清單進行排序,在 Java 中對清單進行排序的各種方法 - 2有時,資料需要按特定順序排列,以便更容易理解、尋找和處理。我們稱這個過程為排序。使用排序,您不僅可以按特定順序組織數據,還可以根據條件組織數據:例如,按數據類型,包括數字、字串和物件。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.Collectionsjava.util.Listjava.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類別有兩個欄位:nameage,以及這些欄位的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 ()方法。

結論

在本教學中,您了解了 Java 中對清單進行排序的多種方法 - Collections.sort()方法、stream.sorted()方法和List.sort()方法。最適合使用哪種方法取決於手邊任務的特定要求。我希望本文為您提供了有關如何在 Java 中對清單進行排序的正確資訊。快樂編碼!
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION