JavaRush /Java Blog /Random-KO /커피 브레이크 #196. Java 8 및 Java 11에서 파일을 올바르게 읽는 방법. Java에서 목...

커피 브레이크 #196. Java 8 및 Java 11에서 파일을 올바르게 읽는 방법. Java에서 목록을 정렬하는 방법, Java에서 목록을 정렬하는 다양한 방법

Random-KO 그룹에 게시되었습니다

Java 8 및 Java 11에서 파일을 올바르게 읽는 방법

출처: Medium 이 튜토리얼을 통해 Java 8 및 Java 11에서 대용량 파일을 처리하고 읽을 때 유용한 몇 가지 팁을 배우게 됩니다. 커피 브레이크 #196.  Java 8 및 Java 11에서 파일을 올바르게 읽는 방법. Java에서 목록을 정렬하는 방법, Java에서 목록을 정렬하는 다양한 방법 - 1 Java에서는 컴퓨터 디스크에 있는 파일을 읽는 것이 매우 간단합니다. Java 8 이상에서는 . 이는 파일 및 디렉토리 작업을 위한 보다 효율적인 방법을 제공하기 위해 Java 7에서 처음 도입된 java.nio.file 패키지 의 일부입니다. 다음은 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> 파일에 저장합니다 . 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에서 목록을 정렬하는 방법. 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);
    }
}
위의 코드는 정수 목록을 생성하고 여기에 4개의 숫자를 추가한 다음 목록을 정렬한 다음 정렬된 목록을 콘솔에 인쇄합니다. Java 표준 라이브러리의 클래스를 사용하여 java.util.Collections , java.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 인터페이스를 구현 하고 비교 메서드를 재정의하여 Person 개체를 연령( age )별로 정렬합니다 . 이 프로그램의 출력은 다음과 같습니다:
//정렬된 목록 출력: [찰리(20), 앨리스(25), 밥(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]
    }
}
기본 메소드 내에서 Arrays.asList는 숫자 라는 정수 목록을 생성합니다 . 그런 다음 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