JavaRush /Java 博客 /Random-ZH /喝咖啡休息#196。如何在Java 8和Java 11中正确读取文件。如何在Java中对列表进行排序,在Java中...

喝咖啡休息#196。如何在Java 8和Java 11中正确读取文件。如何在Java中对列表进行排序,在Java中对列表进行排序的各种方法

已在 Random-ZH 群组中发布

如何在 Java 8 和 Java 11 中正确读取文件

来源:Medium 通过本教程,您将学习一些在 Java 8 和 Java 11 中处理和读取大文件时有用的技巧。 喝咖啡休息#196。 如何在Java 8和Java 11中正确读取文件。如何在Java中对列表进行排序,在Java中对列表进行排序的各种方法 - 1在 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 中处理大文件时,记住一些准则很重要:
  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