JavaRush /Java Blog /Random-JA /コーヒーブレイク#209。Java リストで重複を見つける 4 つの方法。Java を使用して単純なメディア プレ...

コーヒーブレイク#209。Java リストで重複を見つける 4 つの方法。Java を使用して単純なメディア プレーヤーを作成する方法

Random-JA グループに公開済み

Java リストで重複を見つける 4 つの方法

出典: Codippa この記事では、リスト内の重複を検索するさまざまな方法について説明します。複数回出現する要素を重複要素と呼びます。 コーヒーブレイク#209。 Java リストで重複を見つける 4 つの方法。 Java を使用して簡単なメディア プレーヤーを作成する方法 - 1

1. セットの使用

以下は、 Setを使用してJava List内の重複要素を検索するアルゴリズムです。
  • 新しい Java Setオブジェクトと新しいArrayListを作成して、重複した要素を保存します。
  • リストに対して反復またはループを実行します。
  • add()メソッドを使用して、リスト内の各要素をSetに追加します。
  • その結果、add() は、要素が追加された場合はtrueを返し、要素がSetにすでに存在していた場合はfalse を返します。
  • 要素がすでにSet内にある場合、それは重複です。次に、それをArrayListに追加します。
  • 反復の最後に、新しいArrayListには、元の List ( 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内の各要素について、 containsKey()メソッドを使用して、その要素が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. ネストされたループの使用

SetMapなどの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ストリームの使用

このメソッドは Java 8 スレッドに基づいており、次のように動作します。
  • リストをストリームに変換します。
  • collect()メソッドを使用してストリームをMapに変換します。たとえば、キーはリスト内の各要素であり、値は出現回数です。
  • collect()メソッドが戻り、Map は引数としてCollectorを受け取ります。Collector実装は、結果として得られるMapのキーと値を決定します。
  • Map のキーをList の要素にしその値をその出現数にしたいので、 Collectors.groupingBy()を使用してコレクターを作成できます。
  • groupingBy()を使用してMapを作成したら、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() の2 番目の引数は、各グループ内の要素をどのように組み合わせるかを指定する別のコレクターです。
  • ここでは、 Collectors.counting()を使用して、リスト内の各要素の数を含むマップを作成します。
その結果、作成されるマップには、各要素がリスト内に出現する回数が含まれます。次に、 filter()メソッドを使用してマップをフィルタリングし、重複していることを示すカウントが 1 より大きい要素を見つけます。

Java を使用して単純なメディア プレーヤーを作成する方法

出典: Medium このチュートリアルは、オーディオ ファイルとビデオ ファイルを再生するためのシンプルなメディア プレーヤーを Java で作成するのに役立ちます。 コーヒーブレイク#209。 Java リストで重複を見つける 4 つの方法。 Java を使用して単純なメディア プレーヤーを作成する方法 - 2メディア プレーヤーの開発は、Java の組み込みライブラリを使用してメディア ファイルを操作する方法を学ぶのに最適な方法です。このタスクを実行するには、JavaFX と Java 用のグラフィカル ユーザー インターフェイス (GUI) ツールキットを使用します。

ステップ 1: プロジェクトのセットアップ

まず、Java プロジェクトを設定する必要があります。IDE として Eclipse を使用しますが、任意の 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 という2 つのボタンを作成します。再生ボタンがクリックされると、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