JavaRush /Blog Java /Random-VI /Nghỉ giải lao #196. Cách đọc file chính xác trong Java 8 ...

Nghỉ giải lao #196. Cách đọc file chính xác trong Java 8 và Java 11. Cách sắp xếp Danh sách trong Java, các phương pháp khác nhau để sắp xếp danh sách trong Java

Xuất bản trong nhóm

Cách đọc đúng tệp trong Java 8 và Java 11

Nguồn: Medium Với hướng dẫn này, bạn sẽ tìm hiểu một số mẹo hữu ích khi xử lý và đọc các tệp lớn trong Java 8 và Java 11. Nghỉ giải lao #196.  Cách đọc file chính xác trong Java 8 và Java 11. Cách sắp xếp Danh sách trong Java, các phương pháp khác nhau để sắp xếp danh sách trong Java - 1 Việc đọc tệp nằm trên đĩa máy tính của bạn khá đơn giản trong Java. Trong Java 8 trở lên, bạn có thể sử dụng lớp Files cho việc này . Nó là một phần của gói java.nio.file , được giới thiệu lần đầu tiên trong Java 7 để cung cấp một cách hiệu quả hơn để làm việc với các tệp và thư mục. Dưới đây là ví dụ về cách bạn có thể sử dụng lớp Tệp để đọc tệp trong 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();
        }
    }
}
Ví dụ này sử dụng phương thức Files.readAllLines() để đọc tất cả các dòng của một tệp và lưu trữ chúng trong tệp List<String> . Phương thức Paths.get() được sử dụng để tạo đối tượng Path đại diện cho tệp. Ngoài ra, bạn có thể sử dụng 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();
        }
    }
}
Trong Java 11, để đọc tệp, bạn có thể sử dụng phương thức readString() , nó đọc toàn bộ tệp dưới dạng chuỗi. Đây là một ví dụ về cách sử dụng nó.
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();
        }
    }
}
Khi làm việc với các tệp lớn trong Java, điều quan trọng là phải ghi nhớ một số nguyên tắc:
  1. Sử dụng một trình đọc đệm . Nó cho phép bạn đọc nhiều khối dữ liệu cùng một lúc, thay vì đọc từng ký tự hoặc một dòng một lúc.
  2. Sử dụng kích thước bộ đệm nhỏ hơn : Khi sử dụng đầu đọc có bộ đệm, kích thước bộ đệm nhỏ hơn có thể giúp giảm mức sử dụng bộ nhớ.
  3. Sử dụng API phát trực tuyến . Thay vì tải toàn bộ tệp vào bộ nhớ, API phát trực tuyến cho phép bạn đọc tệp theo từng phần.
  4. Sử dụng một luồng song song để xử lý tệp , đặc biệt nếu tệp lớn.
  5. Đóng file sau khi đọc: điều này sẽ giúp giải phóng tài nguyên.
  6. Sử dụng câu lệnh try-with-resources để tự động đóng tệp sau khi đọc nó. Điều này đảm bảo rằng tệp được đóng ngay cả khi có ngoại lệ xảy ra khi đọc nó.
Dưới đây là ví dụ về cách sử dụng câu lệnh try-with-resources để đọc tệp.
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();
        }
    }
}
Trong ví dụ này, một đối tượng BufferedReader được tạo bên trong câu lệnh try-with-resources, đảm bảo rằng nó sẽ tự động đóng khi thoát khỏi khối, ngay cả khi xảy ra ngoại lệ. Vì vậy, khi đọc các tệp lớn trong Java, tốt nhất nên sử dụng trình đọc có bộ đệm, kích thước bộ đệm nhỏ hơn, API phát trực tuyến, luồng song song và đóng tệp sau khi đọc. Ngoài ra, việc sử dụng câu lệnh try-with-resources có thể giúp đảm bảo rằng tệp được đóng chính xác trong trường hợp có ngoại lệ.

Cách sắp xếp Danh sách trong Java. Các phương pháp sắp xếp danh sách khác nhau trong Java

Nguồn: FreeCodeCamp Bài đăng này đề cập đến các phương pháp sắp xếp Danh sách khác nhau trong Java: Collections.sort() , stream.sorted() và List.sort() . Nghỉ giải lao #196.  Cách đọc file chính xác trong Java 8 và Java 11. Cách sắp xếp Danh sách trong Java, các phương pháp khác nhau để sắp xếp danh sách trong Java - 2Đôi khi dữ liệu cần được sắp xếp theo một thứ tự cụ thể để dễ hiểu, dễ tìm và xử lý hơn. Chúng tôi gọi quá trình này là sắp xếp. Bằng cách sử dụng tính năng sắp xếp, bạn có thể sắp xếp dữ liệu không chỉ theo thứ tự cụ thể mà còn theo tiêu chí: ví dụ: theo loại dữ liệu, bao gồm số, chuỗi và đối tượng. Ngôn ngữ Java có sẵn các phương thức sắp xếp, ví dụ như trong các lớp Collections . Sắp xếp Java thường được sử dụng trong các ứng dụng thương mại điện tử nơi người dùng cần hiển thị danh sách các sản phẩm. Sản phẩm có thể được sắp xếp theo nhiều cách khác nhau tùy thuộc vào yêu cầu mà người dùng đặt ra, chẳng hạn như giá cả, xếp hạng, thương hiệu, v.v. Ví dụ: nếu người dùng muốn xem tất cả các sản phẩm được sắp xếp theo giá tăng dần, ứng dụng có thể sử dụng thuật toán sắp xếp để sắp xếp các sản phẩm theo thứ tự đó. Bằng cách này, khi người dùng duyệt qua các sản phẩm, họ sẽ có thể nhìn thấy những sản phẩm rẻ nhất trước tiên và đưa ra quyết định mua hàng phù hợp.

Cách sử dụng phương thức Collections.Sort() trong Java

Một trong những cách phổ biến nhất để sắp xếp dữ liệu trong Java là sử dụng phương thức Collections.sort() . Theo mặc định, nó sắp xếp danh sách theo thứ tự tăng dần. Dưới đây là ví dụ về cách sử dụng phương thức Collections.sort() để sắp xếp Danh sách các số nguyên:
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);
    }
}
Đoạn mã trên tạo một danh sách các số nguyên, thêm bốn số vào đó, sắp xếp danh sách và sau đó in danh sách đã sắp xếp ra bàn điều khiển. Nó sử dụng các lớp từ Thư viện chuẩn Java để thực hiện các thao tác, bao gồm java.util.Collections , java.util.Listjava.util.ArrayList . Đầu ra là như sau:
// Danh sách sắp xếp đầu ra: [1, 2, 3, 4]
Bạn cũng có thể sắp xếp danh sách các đối tượng tùy chỉnh bằng phương thức Collections.sort() . Để thực hiện việc này, bạn sẽ cần tạo một bộ so sánh và chuyển nó làm đối số cho phương thức Collections.sort() . Bộ so sánh là một đối tượng triển khai giao diện java.util.Comparator . Nó có một phương thức có thể gọi duy nhất, so sánh() , so sánh hai đối tượng và trả về một số nguyên cho biết thứ tự tương đối của chúng. Dưới đây là ví dụ về cách sử dụng bộ so sánh để sắp xếp danh sách các đối tượng tùy chỉnh:
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();
    }
}
Mã hiển thị ở trên tạo một danh sách các đối tượng Person , thêm một số đối tượng Person vào danh sách , sắp xếp danh sách bằng cách sử dụng bộ so sánh tùy chỉnh ( PersonComparator ), sau đó in danh sách đã sắp xếp. Lớp Person có hai trường, nameage , cũng như các phương thức getter cho các trường này. Lớp PersonComparator triển khai giao diện Comparator và ghi đè phương thức so sánh để sắp xếp các đối tượng Person theo độ tuổi ( age ). Đầu ra của chương trình này sẽ như thế này:
//xuất ra Danh sách được sắp xếp: [Charlie (20), Alice (25), Bob (30)]
Phương thức Collections.sort() được sử dụng tốt nhất khi bạn có một tập hợp các đối tượng mà bạn muốn sắp xếp theo một hoặc nhiều trường. Ví dụ: nếu bạn có một bộ sưu tập các đối tượng Nhân viên và muốn sắp xếp chúng theo họ, bạn có thể sử dụng phương thức Collections.sort() và chuyển một bộ so sánh tùy chỉnh để so sánh họ của các đối tượng Nhân viên .

Cách sử dụng phương thức List.Sort() trong Java

Phương pháp này sắp xếp danh sách theo thứ tự tăng dần. Đây là cách nó hoạt động:
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]
    }
}
Bên trong phương thức chính , Arrays.asList tạo một danh sách các số nguyên gọi là số . Sau đó, mã sẽ sắp xếp danh sách các số này bằng phương pháp sắp xếp mặc định, vì null được truyền cho phương thức sắp xếp . Cuối cùng, danh sách đã sắp xếp được in ra bàn điều khiển bằng phương thức System.out.println . Đầu ra là [1, 2, 3, 4, 5] . List.sort() rất hữu ích khi bạn có danh sách các phần tử cần được sắp xếp. Ví dụ: nếu bạn có một danh sách các chuỗi và muốn sắp xếp chúng theo thứ tự bảng chữ cái, bạn có thể sử dụng phương thức List.sort() để thực hiện việc này . List.sort() là một phương thức thể hiện của lớp List và sắp xếp các phần tử theo thứ tự được xác định theo thứ tự tự nhiên của chúng hoặc cách triển khai Icomparer đã cho .

Cách sử dụng phương thức Stream.sorted() trong Java

Trong Java 8 trở lên, bạn có thể sử dụng API luồng để sắp xếp danh sách. Nó cung cấp phương thức được sắp xếp , có thể được sử dụng để sắp xếp các phần tử của luồng. Dưới đây là ví dụ về cách sắp xếp danh sách các số nguyên bằng luồng:
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]

    }
}
Như bạn có thể thấy, danh sách các số được chuyển đổi thành một luồng bằng phương thức stream() . Phương thức được sắp xếp () sau đó được gọi để sắp xếp các phần tử trong luồng . Phương thức Collect(Collector.toList()) được sử dụng để thu thập các phần tử đã được sắp xếp trở lại danh sách. Kết quả là một danh sách mới chứa các phần tử đã được sắp xếp. Đầu ra là [1, 2, 3, 4, 5] . Stream.sorted() được sử dụng tốt nhất khi bạn có một luồng phần tử cần được sắp xếp. Ví dụ: nếu bạn có một luồng số nguyên và bạn muốn sắp xếp chúng theo thứ tự tăng dần thì tốt hơn nên sử dụng phương thức stream.Sorted() cho việc này .

Phần kết luận

Trong hướng dẫn này, bạn đã biết rằng có một số cách để sắp xếp danh sách trong Java - phương thức Collections.sort() , phương thức Stream.sorted() và phương thức List.sort() . Việc sử dụng phương pháp nào trong số những phương pháp này là tốt nhất tùy thuộc vào yêu cầu cụ thể của nhiệm vụ hiện tại. Tôi hy vọng bài viết này đã cung cấp cho bạn thông tin chính xác về cách sắp xếp danh sách trong Java. Chúc mừng mã hóa!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION