JavaRush /Blog Java /Random-PL /Przerwa kawowa #196. Jak poprawnie czytać pliki w Javie 8...

Przerwa kawowa #196. Jak poprawnie czytać pliki w Javie 8 i Javie 11. Jak sortować listę w Javie, różne metody sortowania list w Javie

Opublikowano w grupie Random-PL

Jak poprawnie czytać pliki w Java 8 i Java 11

Źródło: Medium Dzięki temu poradnikowi poznasz kilka wskazówek przydatnych podczas przetwarzania i odczytu dużych plików w Javie 8 i Javie 11. Przerwa kawowa #196.  Jak poprawnie czytać pliki w Javie 8 i Javie 11. Jak sortować listę w Javie, różne metody sortowania list w Javie - 1 Odczyt pliku znajdującego się na dysku Twojego komputera jest w Javie dość prosty. W Javie 8 i nowszych można w tym celu użyć klasy Files . Jest częścią pakietu java.nio.file , który został po raz pierwszy wprowadzony w Javie 7, aby zapewnić bardziej efektywny sposób pracy z plikami i katalogami. Poniżej znajduje się przykład wykorzystania klasy Files do odczytania pliku w Javie 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();
        }
    }
}
W tym przykładzie zastosowano metodę Files.readAllLines() w celu odczytania wszystkich wierszy pliku i zapisania ich w pliku List<String> . Metoda Paths.get() służy do tworzenia obiektu Path reprezentującego plik. Możesz także użyć 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();
        }
    }
}
W Javie 11 do odczytu plików można użyć metody readString() , która odczytuje cały plik jako ciąg znaków. Oto przykład, jak z niego korzystać.
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();
        }
    }
}
Podczas pracy z dużymi plikami w Javie należy pamiętać o kilku wskazówkach:
  1. Użyj buforowanego czytnika . Umożliwia odczytywanie dużych porcji danych na raz, zamiast czytać jeden znak lub jedną linię na raz.
  2. Użyj mniejszego rozmiaru bufora : podczas korzystania z buforowanego czytnika mniejszy rozmiar bufora może pomóc zmniejszyć zużycie pamięci.
  3. Użyj interfejsu API przesyłania strumieniowego . Zamiast ładować cały plik do pamięci, interfejs API przesyłania strumieniowego umożliwia odczytanie pliku w częściach.
  4. Użyj wątku równoległego do przetworzenia pliku , szczególnie jeśli plik jest duży.
  5. Po przeczytaniu zamknij plik: pomoże to zwolnić zasoby.
  6. Użyj instrukcji try-with-resources, aby automatycznie zamknąć plik po jego przeczytaniu. Dzięki temu plik zostanie zamknięty, nawet jeśli podczas jego odczytu wystąpi wyjątek.
Poniżej znajduje się przykład użycia instrukcji try-with-resources do odczytania pliku.
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();
        }
    }
}
W tym przykładzie obiekt BufferedReader jest tworzony wewnątrz instrukcji try-with-resources, co gwarantuje, że zostanie on automatycznie zamknięty przy wyjściu z bloku, nawet jeśli wystąpi wyjątek. Tak więc, czytając duże pliki w Javie, najlepiej użyć czytnika buforowanego, mniejszego rozmiaru bufora, API przesyłania strumieniowego, strumienia równoległego i zamknąć plik po jego przeczytaniu. Ponadto użycie instrukcji try-with-resources może pomóc w zapewnieniu prawidłowego zamknięcia pliku w przypadku wyjątku.

Jak sortować listę w Javie. Różne metody sortowania list w Javie

Źródło: FreeCodeCamp W tym poście omówiono różne metody sortowania list w Javie: Collections.sort() , stream.sorted() i List.sort() . Przerwa kawowa #196.  Jak poprawnie czytać pliki w Javie 8 i Javie 11. Jak sortować listę w Javie, różne metody sortowania list w Javie - 2Czasami dane muszą być ułożone w określonej kolejności, aby ułatwić ich zrozumienie, znalezienie i przetworzenie. Nazywamy to sortowaniem procesu. Korzystając z sortowania, możesz uporządkować dane nie tylko w określonej kolejności, ale także według kryteriów: na przykład według typu danych, w tym liczb, ciągów znaków i obiektów. Język Java posiada wbudowane metody sortowania, na przykład w klasach Collections . Sortowanie w języku Java jest często stosowane w aplikacjach e-commerce, gdzie użytkownik musi wyświetlić listę produktów. Produkty można sortować na różne sposoby w zależności od wymagań stawianych przez użytkownika, takich jak cena, ocena, marka i tak dalej. Na przykład, jeśli użytkownik chce zobaczyć wszystkie produkty posortowane według ceny w kolejności rosnącej, aplikacja może użyć algorytmu sortowania, aby ułożyć produkty w tej kolejności. Dzięki temu, przeglądając produkty, użytkownik będzie mógł najpierw zobaczyć najtańsze produkty i na tej podstawie podjąć decyzję o zakupie.

Jak używać metody Collections.Sort() w Javie

Jednym z najpopularniejszych sposobów sortowania danych w Javie jest użycie metody Collections.sort() . Domyślnie sortuje listę w kolejności rosnącej. Oto przykład użycia metody Collections.sort() do sortowania listy liczb całkowitych:
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);
    }
}
Powyższy kod tworzy listę liczb całkowitych, dodaje do niej cztery liczby, sortuje listę, a następnie wypisuje posortowaną listę na konsoli. Do wykonywania operacji wykorzystuje klasy z biblioteki Java Standard Library, w tym java.util.Collections , java.util.List i java.util.ArrayList . Dane wyjściowe są następujące:
//Wyjście posortowanej listy: [1, 2, 3, 4]
Listę niestandardowych obiektów można także sortować za pomocą metody Collections.sort() . Aby to zrobić, musisz utworzyć komparator i przekazać go jako argument do metody Collections.sort() . Komparator to obiekt implementujący interfejs java.util.Comparator . Ma jedną wywoływalną metodę Compare() , która porównuje dwa obiekty i zwraca liczbę całkowitą wskazującą ich względną kolejność. Oto przykład użycia komparatora do sortowania listy obiektów niestandardowych:
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();
    }
}
Powyższy kod tworzy listę obiektów Person , dodaje do listy kilka obiektów Person , sortuje listę za pomocą niestandardowego komparatora ( PersonComparator ), a następnie drukuje posortowaną listę. Klasa Person ma dwa pola, name i age , a także metody pobierające dla tych pól. Klasa PersonComparator implementuje interfejs Comparator i zastępuje metodę porównania, aby sortować obiekty Person według wieku ( age ). Dane wyjściowe tego programu będą wyglądać następująco:
//wyjście posortowanej listy: [Charlie (20), Alice (25), Bob (30)]
Metodę Collections.sort() najlepiej stosować, gdy masz kolekcję obiektów, które chcesz posortować według jednego lub większej liczby pól. Na przykład, jeśli masz kolekcję obiektów Employee i chcesz posortować je według nazwiska, możesz użyć metody Collections.sort() i przekazać niestandardowy komparator, który porównuje nazwiska obiektów Employee .

Jak używać metody List.Sort() w Javie

Ta metoda sortuje listę w kolejności rosnącej. Oto jak to działa:
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]
    }
}
Wewnątrz metody main Arrays.asList tworzy listę liczb całkowitych zwanych liczbami . Następnie kod sortuje tę listę liczb przy użyciu domyślnej metody sortowania, ponieważ do metody sortowania przekazywana jest wartość null . Na koniec posortowana lista jest drukowana na konsoli przy użyciu metody System.out.println . Wynik to [1, 2, 3, 4, 5] . List.sort() jest przydatna, gdy masz listę elementów, które wymagają posortowania. Na przykład, jeśli masz listę ciągów znaków i chcesz je posortować alfabetycznie, możesz w tym celu użyć metody List.sort() . List.sort() jest metodą instancji klasy List i sortuje elementy w kolejności określonej przez ich naturalną kolejność lub daną implementację Icomparera .

Jak używać metody stream.sorted() w Javie

W języku Java 8 i nowszych wersjach można używać interfejsu Stream API do sortowania listy. Udostępnia metodę sorted , której można użyć do sortowania elementów strumienia. Oto przykład sortowania listy liczb całkowitych za pomocą strumienia:
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]

    }
}
Jak widać, lista liczb jest konwertowana na strumień za pomocą metody stream() . Następnie wywoływana jest metoda sorted() w celu posortowania elementów strumienia . Metodacollect (Collectors.toList()) służy do gromadzenia posortowanych elementów z powrotem na listę. Wynikiem jest nowa lista zawierająca posortowane elementy. Wynik to [1, 2, 3, 4, 5] . Stream.sorted() najlepiej stosować, gdy masz strumień elementów, które wymagają posortowania. Na przykład, jeśli masz strumień liczb całkowitych i chcesz posortować je w kolejności rosnącej, lepiej jest użyć w tym celu metody stream.Sorted() .

Wniosek

W tym samouczku nauczyłeś się, że istnieje kilka sposobów sortowania listy w Javie — metoda Collections.sort() , metoda stream.sorted() i metoda List.sort() . To, która z tych metod jest najlepsza, zależy od konkretnych wymagań danego zadania. Mam nadzieję, że ten artykuł zawiera prawidłowe informacje na temat sortowania listy w Javie. Miłego kodowania!
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION