JavaRush /Blog Java /Random-ES /Pausa para el café #196. Cómo leer archivos correctamente...

Pausa para el café #196. Cómo leer archivos correctamente en Java 8 y Java 11. Cómo ordenar una Lista en Java, varios métodos para ordenar listas en Java

Publicado en el grupo Random-ES

Cómo leer archivos correctamente en Java 8 y Java 11

Fuente: Medio Con este tutorial, aprenderá varios consejos que son útiles al procesar y leer archivos grandes en Java 8 y Java 11. Pausa para el café #196.  Cómo leer archivos correctamente en Java 8 y Java 11. Cómo ordenar una Lista en Java, varios métodos para ordenar listas en Java - 1 Leer un archivo que se encuentra en el disco de su computadora es bastante simple en Java. En Java 8 y versiones posteriores, puede utilizar la clase Archivos para esto . Es parte del paquete java.nio.file , que se introdujo por primera vez en Java 7 para proporcionar una forma más eficiente de trabajar con archivos y directorios. A continuación se muestra un ejemplo de cómo puede utilizar la clase Archivos para leer un archivo en 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();
        }
    }
}
Este ejemplo utiliza el método Files.readAllLines() para leer todas las líneas de un archivo y almacenarlas en un archivo List<String> . El método Paths.get() se utiliza para crear un objeto Path que represente el archivo. También puedes usar 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();
        }
    }
}
En Java 11, para leer archivos puede utilizar el método readString() , que lee el archivo completo como una cadena. Aquí tienes un ejemplo de cómo utilizarlo.
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();
        }
    }
}
Cuando se trabaja con archivos grandes en Java, es importante tener en cuenta algunas pautas:
  1. Utilice un lector almacenado en búfer . Le permite leer grandes cantidades de datos a la vez, en lugar de leer un carácter o una línea a la vez.
  2. Utilice un tamaño de búfer más pequeño : cuando utilice un lector con búfer, un tamaño de búfer más pequeño puede ayudar a reducir el uso de memoria.
  3. Utilice la API de transmisión . En lugar de cargar el archivo completo en la memoria, la API de transmisión le permite leer el archivo en partes.
  4. Utilice un hilo paralelo para procesar el archivo , especialmente si el archivo es grande.
  5. Cierra el archivo después de leerlo: esto ayudará a liberar recursos.
  6. Utilice la instrucción try-with-resources para cerrar automáticamente un archivo después de leerlo. Esto garantiza que el archivo se cierre incluso si se produce una excepción al leerlo.
A continuación se muestra un ejemplo del uso de la declaración try-with-resources para leer un archivo.
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();
        }
    }
}
En este ejemplo, se crea un objeto BufferedReader dentro de una declaración de prueba con recursos, lo que garantiza que se cierre automáticamente al salir del bloque, incluso si ocurre una excepción. Por lo tanto, al leer archivos grandes en Java, es mejor utilizar un lector con búfer, un tamaño de búfer más pequeño, API de transmisión, transmisión paralela y cerrar el archivo después de leerlo. Además, utilizar una declaración de prueba con recursos puede ayudar a garantizar que el archivo se cierre correctamente en caso de una excepción.

Cómo ordenar una lista en Java. Varios métodos de clasificación de listas en Java

Fuente: FreeCodeCamp Esta publicación cubre varios métodos de clasificación de listas en Java: Collections.sort() , stream.sorted() y List.sort() . Pausa para el café #196.  Cómo leer archivos correctamente en Java 8 y Java 11. Cómo ordenar una Lista en Java, varios métodos para ordenar listas en Java - 2A veces es necesario organizar los datos en un orden específico para que sean más fáciles de entender, encontrar y procesar. A este proceso lo llamamos clasificación. Al utilizar la clasificación, puede organizar los datos no solo en un orden específico, sino también según criterios: por ejemplo, por tipo de datos, incluidos números, cadenas y objetos. El lenguaje Java tiene métodos integrados para ordenar, por ejemplo en las clases de Colecciones . La clasificación de Java se utiliza a menudo en aplicaciones de comercio electrónico donde el usuario necesita mostrar una lista de productos. Los productos se pueden ordenar de varias maneras dependiendo de los requisitos que establezca el usuario, como precio, calificación, marca, etc. Por ejemplo, si un usuario quiere ver todos los productos ordenados por precio en orden ascendente, la aplicación puede utilizar un algoritmo de clasificación para organizar los productos en ese orden. De esta manera, cuando un usuario busque productos, podrá ver primero los productos más baratos y tomar una decisión de compra en consecuencia.

Cómo utilizar el método Collections.Sort() en Java

Una de las formas más comunes de ordenar datos en Java es utilizar el método Collections.sort() . De forma predeterminada, ordena la lista en orden ascendente. A continuación se muestra un ejemplo del uso del método Collections.sort() para ordenar una lista de números enteros:
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);
    }
}
El código anterior crea una lista de números enteros, le agrega cuatro números, ordena la lista y luego imprime la lista ordenada en la consola. Utiliza clases de la biblioteca estándar de Java para realizar operaciones, incluidas java.util.Collections , java.util.List y java.util.ArrayList . El resultado es el siguiente:
//Lista ordenada de salida: [1, 2, 3, 4]
También puede ordenar una lista de objetos personalizados utilizando el método Collections.sort() . Para hacer esto, necesitará crear un comparador y pasarlo como argumento al método Collections.sort() . Un comparador es un objeto que implementa la interfaz java.util.Comparator . Tiene un único método invocable, compare() , que compara dos objetos y devuelve un número entero que indica su orden relativo. A continuación se muestra un ejemplo de cómo utilizar un comparador para ordenar una lista de objetos personalizados:
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();
    }
}
El código que se muestra arriba crea una lista de objetos Person , agrega varios objetos Person a la lista , ordena la lista usando un comparador personalizado ( PersonComparator ) y luego imprime la lista ordenada. La clase Persona tiene dos campos, nombre y edad , así como métodos getter para estos campos. La clase PersonComparator implementa la interfaz Comparator y anula el método de comparación para ordenar los objetos Person por edad ( age ). El resultado de este programa será así:
//salida de lista ordenada: [Charlie (20), Alice (25), Bob (30)]
El método Collections.sort() se utiliza mejor cuando tienes una colección de objetos que deseas ordenar por uno o más campos. Por ejemplo, si tiene una colección de objetos Empleado y desea ordenarlos por apellido, puede usar el método Collections.sort() y pasar un comparador personalizado que compare los apellidos de los objetos Empleado .

Cómo utilizar el método List.Sort() en Java

Este método ordena la lista en orden ascendente. Así es como funciona:
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]
    }
}
Dentro del método principal , Arrays.asList crea una lista de números enteros llamados números . Luego, el código ordena esta lista de números utilizando el método de clasificación predeterminado, ya que null se pasa al método de clasificación . Finalmente, la lista ordenada se imprime en la consola usando el método System.out.println . La salida es [1, 2, 3, 4, 5] . List.sort() es útil cuando tienes una lista de elementos que deben ordenarse. Por ejemplo, si tiene una lista de cadenas y desea ordenarlas alfabéticamente, puede usar el método List.sort() para hacerlo . List.sort() es un método de instancia de la clase List y ordena los elementos en el orden determinado por su orden natural o la implementación de Icomparer dada .

Cómo utilizar el método stream.sorted() en Java

En Java 8 y versiones posteriores, puede utilizar Stream API para ordenar una lista. Proporciona el método ordenado , que se puede utilizar para ordenar los elementos de una secuencia. Aquí hay un ejemplo de cómo ordenar una lista de números enteros usando una secuencia:
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]

    }
}
Como puede ver, la lista de números se convierte en una secuencia utilizando el método stream() . Luego se llama al método sorted() para ordenar los elementos en la secuencia . El método Collect(Collectors.toList()) se utiliza para recopilar los elementos ordenados nuevamente en una lista. El resultado es una nueva lista que contiene los elementos ordenados. La salida es [1, 2, 3, 4, 5] . stream.sorted() se utiliza mejor cuando tienes un flujo de elementos que deben ordenarse. Por ejemplo, si tiene una secuencia de números enteros y desea ordenarlos en orden ascendente, entonces es mejor usar el método stream.Sorted() para esto .

Conclusión

En este tutorial, aprendió que hay varias formas de ordenar una lista en Java: el método Collections.sort() , el método stream.sorted() y el método List.sort() . Cuál de estos métodos es mejor utilizar depende de los requisitos específicos de la tarea en cuestión. Espero que este artículo le haya brindado la información correcta sobre cómo ordenar una lista en Java. ¡Feliz codificación!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION