JavaRush /Java Blog /Random-TW /喝咖啡休息#209。在 Java 清單中尋找重複項目的 4 種方法。如何使用 Java 建立簡單的媒體播放器

喝咖啡休息#209。在 Java 清單中尋找重複項目的 4 種方法。如何使用 Java 建立簡單的媒體播放器

在 Random-TW 群組發布

在 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]
請注意,我們使用forEach()方法來迭代List,但您可以使用任何其他方法。

2. 使用地圖

以下是這種在List中尋找重複項的方法的演算法步驟。
  • 建立一個新的Map物件和一個新的ArrayList來保存重複元素。
  • 該Map的鍵將是原始List的元素,其值將是它們在List中出現的次數。
  • 循環遍歷列表(List)。
  • 對於List中的每個元素,使用containsKey()方法檢查它是否作為Map中的鍵存在。
  • 如果存在,則在Map中增加其值,然後使用put()方法再次新增它。
  • 如果不存在,則將其加到Map中,值為1。
  • 一旦列表迭代完成,所有值大於 1 的Map元素都會變成重複項。
  • 最後,迭代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.使用嵌套循環

如果要求您在不使用任何Collection類別(如SetMap等)的情況下查找清單中的重複元素,那麼此方法將很有用。演算法階段:
  • 循環遍歷列表(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。例如,key清單中的每個元素,value出現的次數。
  • collect()方法傳回,MapCollector當作參數。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() 方法用於根據特定條件對集合中的項目進行分組。以下是此方法如何運作的範例:
  • 這個標準以 lambda 表達式的形式提供,因為groupingBy()採用Function參數,它是一個函數介面。
  • 在本例中,我們按恆等函數n -> n進行分組,這表示我們按列表元素的值將列表元素分組。
  • groupingBy() 的第二個參數是另一個收集器,它指定應如何組合每個群組中的元素。
  • 這裡我們使用Collectors.counting()來建立一個包含清單中每個元素的計數的Map 。
因此,產生的Map將包含每個元素在清單中出現的次數的計數。然後,我們使用filter()方法過濾Map以查找計數大於 1 的元素,表示它們是重複的。

如何使用 Java 建立簡單的媒體播放器

來源:Medium 本教學將幫助您用 Java 創建一個簡單的媒體播放器來播放音訊和視訊檔案。 喝咖啡休息#209。 在 Java 清單中尋找重複項目的 4 種方法。 如何使用 Java 建立一個簡單的媒體播放器 - 2開發媒體播放器是學習如何使用 Java 內建程式庫處理媒體檔案的好方法。為了完成此任務,我們將使用 JavaFX 和 Java 圖形使用者介面 (GUI) 工具包。

第 1 步:項目設置

首先,我們需要設定 Java 專案。我們將使用 Eclipse 作為 IDE,但您可以使用您選擇的任何 IDE。建立一個新的 Java 專案並將其命名為「MediaPlayer」。我們還需要將 JavaFX 庫新增到我們的專案中。為此,請轉到專案屬性並將 JavaFX 庫新增至專案的建置路徑。

第 2 步:建立使用者介面

接下來我們將為媒體播放器建立使用者介面。它將是一個簡單的用戶介面,帶有播放按鈕、停止按鈕和媒體播放器面板,用於顯示我們想要播放的視訊或音訊檔案。對於我們的介面,我們將使用BorderPane 佈局。媒體播放器面板將位於 BorderPane 的中心,播放和停止按鈕將位於 BorderPane 的底部。這是使用者介面程式碼:
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