JavaRush /Java Blog /Random-KO /커피 브레이크 #209. Java 목록에서 중복 항목을 찾는 4가지 방법 Java를 사용하여 간단한 미...

커피 브레이크 #209. Java 목록에서 중복 항목을 찾는 4가지 방법 Java를 사용하여 간단한 미디어 플레이어를 만드는 방법

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

Java 목록에서 중복 항목을 찾는 4가지 방법

출처: Codippa 이 문서에서는 목록에서 중복 항목을 찾는 다양한 방법을 다룹니다. 두 번 이상 나타나는 중복 요소를 호출합니다. 커피 브레이크 #209.  Java 목록에서 중복 항목을 찾는 4가지 방법  Java를 사용하여 간단한 미디어 플레이어를 만드는 방법 - 1

1. 세트 사용

다음은 Set 을 사용하여 Java 목록 에서 중복 요소를 찾는 알고리즘입니다 .
  • 중복 요소를 저장하기 위해 새로운 Java Set 객체 와 새로운 ArrayList를 생성합니다.
  • 목록을 통해 반복 또는 루프를 수행합니다.
  • add() 메소드를 사용하여 목록의 각 요소를 Set 에 추가합니다 .
  • 결과적으로 add()는 요소가 추가된 경우 true를 반환 하고 해당 요소가 Set 에 이미 있는 경우 false를 반환합니다 .
  • 요소가 이미 Set 에 있으면 중복된 것입니다. 그런 다음 ArrayList 에 추가합니다 .
  • 반복이 끝나면 새 ArrayList 에는 원래 목록( List ) 의 모든 중복 요소가 포함됩니다 .
이 알고리즘을 기반으로 한 예제 프로그램은 아래와 같습니다.
List<Integer> numbers = List.of(1, 2, 3, 4, 3, 1, 2);
Set<Integer> set = new HashSet<>();
List<Object> duplicates = new ArrayList<>();
numbers.forEach(n -> {
  if (!set.add(n)) {
    duplicates.add(n);
  }
});
System.out.println("Duplicate elements: " + duplicates);
결론:
중복 요소: [3, 1, 2]
List 를 반복하기 위해 forEach() 메서드를 사용했지만 다른 메서드를 사용할 수도 있습니다.

2. 지도 활용

다음은 List 에서 중복 항목을 찾는 이 방법의 알고리즘 단계입니다 .
  • 중복 요소를 보유할 새 Map 객체 와 새 ArrayList를 만듭니다.
  • 이 Map 의 키는 원본 List 의 요소가 되며 해당 값은 List 에서 해당 항목이 나타나는 횟수가 됩니다 .
  • 목록을 반복합니다( List ).
  • List 의 각 요소에 대해 containKey() 메서드를 사용하여 Map 에 키로 존재하는지 확인합니다 .
  • 존재하는 경우 Map 에서 해당 값을 증가시키고 put() 메서드를 사용하여 다시 추가합니다 .
  • 존재하지 않는 경우 값 1로 맵 에 추가합니다.
  • 목록 반복이 완료되면 값이 1보다 큰 모든 Map 요소가 중복됩니다.
  • 마지막으로 맵을 반복하고 값이 1보다 큰 요소를 목록에 추가하여 중복 요소를 저장합니다.
예제 프로그램은 아래와 같습니다:
List<Integer> numbers = List.of(1, 2, 3, 4, 3, 1, 2);
Map<Integer, Integer> countMap = new HashMap<>();
List<Object> duplicates = new ArrayList<>();
numbers.forEach(n -> {
  if (countMap.containsKey(n)) {
    countMap.put(n, countMap.get(n) + 1);
  } else {
    countMap.put(n, 1);
  }
});
countMap.keySet().forEach(k -> {
  if(countMap.get(k)> 1) {
    duplicates.add(k);
  }
});

3. 중첩 루프 사용

Set , Map 등과 같은 Collection 클래스 를 사용하지 않고 목록에서 중복 요소를 찾으라는 요청을 받은 경우 이 방법이 유용할 것입니다. 알고리즘 단계:
  • 목록을 반복합니다( List ).
  • 루프가 처음 완료된 후 처음으로 돌아가서 단계를 다시 반복하여 목록의 나머지 부분에서 각 항목을 찾으세요.
  • 현재 루프 요소가 나머지 요소 중 하나와 같으면 중복입니다.
이 알고리즘을 사용하여 작성된 프로그램은 다음과 같습니다.
List<Integer> numbers = List.of(1, 2, 3, 4, 3, 1, 2);
List<Object> duplicates = new ArrayList<>();
for (int i = 0; i < numbers.size() - 1; i++) {
  for (int j = i + 1; j < numbers.size(); j++) {
    if (numbers.get(i).equals(numbers.get(j))) {
      duplicates.add(numbers.get(i));
    }
  }
}

4. 자바 스트림 사용

이 방법은 Java 8 스레드를 기반으로 하며 다음과 같이 작동합니다.
  • 목록을 스트림 으로 변환합니다 .
  • Collect() 메서드를 사용하여 스트림을 Map 으로 변환합니다 . 예를 들어, 키는 목록 의 각 요소이고 값은 발생 횟수 입니다 .
  • Collect() 메소드는 반환하고 Map은 Collector를 인수로 사용합니다 . Collector 구현은 결과 Map 의 키와 값을 결정합니다 .
  • Map의 키가 List의 요소가 되고 값이 해당 항목의 발생 횟수가 되기를 원하므로 Collectors.groupingBy()를 사용하여 Collector를 생성할 수 있습니다 .
  • groupingBy() 를 사용하여 지도를 만든 후에는 EntrySet() 메서드를 사용하여 Map.Entry 객체 세트를 가져옵니다 .
  • 1보다 큰 값(즉, 발생 횟수)을 기준으로 레코드를 필터링합니다.
  • 필터링된 레코드를 해당 키와 일치시킵니다.
예제 프로그램:
List<Integer> numbers = List.of(1, 2, 3, 4, 3, 1, 2);
Map<Object, Long> map = numbers.
                        stream().
                        collect(
                          Collectors.
                          groupingBy(n -> n, Collectors.counting())
                        );
List<Object> duplicates = map.
                          entrySet().
                          stream().
                          filter(e -> e.getValue() > 1).
                          map(e -> e.getKey()).
        collect(Collectors.toList());
groupingBy() 메서드는 특정 기준에 따라 컬렉션의 항목을 그룹화하는 데 사용됩니다. 다음은 이 방법의 작동 방식에 대한 예입니다.
  • groupingBy()가 함수 인터페이스인 Function 인수를 사용 하므로 기준이 람다 식으로 제공됩니다 .
  • 이 경우 항등 함수 n -> n 으로 그룹화합니다 . 이는 목록 요소를 해당 값으로 그룹화한다는 의미입니다.
  • groupingBy()의 두 번째 인수는 각 그룹의 요소를 결합하는 방법을 지정하는 또 다른 수집기입니다.
  • 여기서는 목록의 각 요소 수를 포함하는 맵을 생성하는 Collectors.counting()을 사용합니다 .
결과적으로 결과 맵에는 각 요소가 목록에 나타나는 횟수가 포함됩니다. 그런 다음 filter() 메서드를 사용하여 Map을 필터링하여 개수가 1보다 큰 요소를 찾아 중복임을 나타냅니다.

Java를 사용하여 간단한 미디어 플레이어를 만드는 방법

출처: 중간 이 튜토리얼은 오디오 및 비디오 파일을 재생하기 위해 Java로 간단한 미디어 플레이어를 만드는 데 도움이 됩니다. 커피 브레이크 #209.  Java 목록에서 중복 항목을 찾는 4가지 방법  Java를 사용하여 간단한 미디어 플레이어를 만드는 방법 - 2미디어 플레이어를 개발하는 것은 Java의 내장 라이브러리를 사용하여 미디어 파일 작업을 수행하는 방법을 배울 수 있는 좋은 방법이 될 수 있습니다. 이 작업을 수행하기 위해 JavaFX 및 Java용 그래픽 사용자 인터페이스(GUI) 툴킷을 사용합니다.

1단계: 프로젝트 설정

먼저 Java 프로젝트를 설정해야 합니다. 우리는 Eclipse를 IDE로 사용할 것이지만 원하는 IDE를 사용할 수 있습니다. 새로운 Java 프로젝트를 생성하고 이름을 "MediaPlayer"로 지정합니다. 또한 프로젝트에 JavaFX 라이브러리를 추가해야 합니다. 이렇게 하려면 프로젝트 속성으로 이동하여 JavaFX 라이브러리를 프로젝트의 빌드 경로에 추가하세요.

2단계: 사용자 인터페이스 생성

다음으로 미디어 플레이어용 사용자 인터페이스를 생성하겠습니다. 이는 재생 버튼, 중지 버튼 및 재생하려는 비디오 또는 오디오 파일을 표시하는 미디어 플레이어 패널이 있는 간단한 사용자 인터페이스입니다. 인터페이스에서는 BorderPane 레이아웃을 사용합니다 . 미디어 플레이어 패널은 BorderPane 중앙에 있고 재생 및 중지 버튼은 BorderPane 하단에 있습니다. UI 코드는 다음과 같습니다.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;

public class MediaPlayerApp extends Application {

    private MediaPlayer mediaPlayer;

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("Media Player");

        Button playButton = new Button("Play");
        playButton.setOnAction(e -> mediaPlayer.play());

        Button stopButton = new Button("Stop");
        stopButton.setOnAction(e -> mediaPlayer.stop());

        BorderPane borderPane = new BorderPane();

        Media media = new Media("http://www.example.com/sample.mp4");
        mediaPlayer = new MediaPlayer(media);
        MediaView mediaView = new MediaView(mediaPlayer);
        borderPane.setCenter(mediaView);
        borderPane.setBottom(stopButton);
        borderPane.setRight(playButton);

        Scene scene = new Scene(borderPane, 600, 400);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
이 코드에서는 playButtonstopButton 이라는 두 개의 버튼을 만듭니다 . 재생 버튼을 클릭하면 mediaPlayer 객체 의 play() 메서드를 호출합니다 . 중지 버튼을 클릭하면 mediaPlayer 개체 의 stop() 메서드를 호출합니다 . 또한 예제 비디오 파일의 URL을 사용하여 Media 객체를 생성하고 Media 객체를 사용하여 mediaPlayer 객체를 생성합니다 . 마지막으로 MediaPlayer 객체 로 MediaView 객체를 생성 하고 이를 BorderPane의 중심으로 설정합니다 .

3단계. 미디어 플레이어 테스트

이제 미디어 플레이어 UI가 구성되었으므로 애플리케이션을 실행하여 테스트할 수 있습니다. 애플리케이션을 실행하면 미디어 플레이어 UI가 나타나며 재생 버튼을 클릭하여 비디오 파일 재생을 시작할 수 있습니다. 중지 버튼을 클릭하여 비디오 파일 재생을 중지할 수도 있습니다.

4단계: 미디어 플레이어 설정

이제 작동하는 미디어 플레이어가 있으므로 원하는 대로 사용자 정의할 수 있습니다. 사용자 인터페이스의 레이아웃을 변경하고, 재생 중인 비디오 파일을 변경하고, 추가 버튼을 추가하여 볼륨을 조정하거나, 진행률 표시줄을 추가하여 비디오 진행 상황을 표시할 수 있습니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION