JavaRush /Blog Java /Random-MS /Coffee break #209. 4 Cara Mencari Pendua dalam Senarai Ja...

Coffee break #209. 4 Cara Mencari Pendua dalam Senarai Java. Cara Membuat Pemain Media Mudah Menggunakan Java

Diterbitkan dalam kumpulan

4 Cara Mencari Pendua dalam Senarai Java

Sumber: Codippa Artikel ini merangkumi pelbagai cara untuk mencari pendua dalam Senarai. Kami memanggil elemen pendua yang muncul lebih daripada sekali. Coffee break #209.  4 Cara Mencari Pendua dalam Senarai Java.  Cara membuat pemain media mudah menggunakan Java - 1

1. Menggunakan Set

Di bawah ialah algoritma untuk mencari elemen pendua dalam Senarai Java menggunakan Set .
  • Kami mencipta objek Java Set baharu dan ArrayList baharu untuk menyimpan elemen pendua.
  • Kami melakukan lelaran atau gelung melalui senarai.
  • Kami menambah setiap elemen dalam senarai ke Set menggunakan kaedah add() .
  • Akibatnya, add() mengembalikan benar jika elemen ditambahkan, dan palsu jika elemen itu sudah ada dalam Set .
  • Jika elemen sudah ada dalam Set , ia adalah pendua. Kemudian kami menambahnya pada ArrayList .
  • Pada penghujung lelaran, ArrayList baharu akan mengandungi semua elemen pendua daripada Senarai asal ( List ).
Contoh program berdasarkan algoritma ini ditunjukkan di bawah.
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);
Kesimpulan:
Elemen pendua: [3, 1, 2]
Ambil perhatian bahawa kami menggunakan kaedah forEach() untuk melelaran melalui List , tetapi anda boleh menggunakan kaedah lain.

2. Menggunakan Peta

Di bawah ialah langkah algoritma untuk kaedah mencari pendua dalam Senarai .
  • Cipta objek Peta baharu dan ArrayList baharu untuk memegang elemen pendua.
  • Kekunci Peta ini ialah unsur Senarai asal dan nilainya ialah bilangan kejadiannya dalam Senarai .
  • Gelung melalui senarai ( Senarai ).
  • Untuk setiap elemen dalam Senarai , semak sama ada ia wujud sebagai kunci dalam Peta menggunakan kaedah containsKey() .
  • Jika ia wujud, tambah nilainya dalam Peta dan tambahkannya semula menggunakan kaedah put() .
  • Jika ia tidak wujud, tambahkannya pada Peta dengan nilai 1.
  • Setelah lelaran senarai selesai, semua elemen Peta dengan nilai lebih daripada 1 menjadi pendua.
  • Akhir sekali, ulangi Peta dan tambah elemen yang nilainya lebih besar daripada 1 pada senarai untuk menyimpan elemen pendua.
Contoh program ditunjukkan di bawah:
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. Menggunakan gelung bersarang

Jika anda diminta untuk mencari elemen pendua dalam senarai tanpa menggunakan sebarang kelas Koleksi seperti Set , Map dan sebagainya, maka kaedah ini akan berguna. Peringkat algoritma:
  • Gelung melalui senarai ( Senarai ).
  • Selepas gelung selesai buat kali pertama, kembali ke permulaan dan ulangi langkah sekali lagi untuk mencari setiap item dalam senarai yang lain.
  • Jika elemen gelung semasa adalah sama dengan mana-mana elemen yang tinggal, ia adalah pendua.
Program yang ditulis menggunakan algoritma ini kelihatan seperti ini:
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. Menggunakan Java Stream

Kaedah ini berdasarkan Java 8 thread dan berfungsi seperti ini:
  • Tukar Senarai kepada Strim .
  • Tukar strim kepada Peta menggunakan kaedah collect() . Sebagai contoh, kunci ialah setiap elemen dalam senarai, dan nilai ialah bilangan kejadian.
  • Kaedah collect() kembali dan Map mengambil Collector sebagai hujah. Pelaksanaan Pemungut menentukan kunci dan nilai Peta yang dihasilkan .
  • Memandangkan kami mahu kunci Peta menjadi elemen Senarai dan nilainya ialah bilangan kejadiannya, kami boleh menggunakan Collectors.groupingBy() untuk mencipta collector .
  • Setelah Map telah dibuat menggunakan groupingBy() , gunakan kaedah entrySet() untuk mendapatkan set objek Map.Entry .
  • Tapis rekod berdasarkan nilai (iaitu, bilangan kejadian) lebih daripada 1.
  • Padankan rekod yang ditapis dengan kuncinya.
Contoh program:
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());
Kaedah groupingBy() digunakan untuk mengumpulkan item dalam koleksi berdasarkan kriteria tertentu. Berikut ialah contoh cara kaedah ini berfungsi:
  • Kriteria disediakan sebagai ungkapan lambda kerana groupingBy() mengambil argumen Function , iaitu antara muka fungsi.
  • Dalam kes ini, kami mengumpulkan mengikut fungsi identiti n -> n , yang bermaksud kami mengumpulkan elemen senarai mengikut nilainya.
  • Argumen kedua kepada groupingBy() ialah pengumpul lain yang menentukan cara elemen dalam setiap kumpulan harus digabungkan.
  • Di sini kami menggunakan Collectors.counting() yang mencipta Peta yang mengandungi kiraan setiap elemen dalam senarai.
Akibatnya, Peta yang terhasil akan mengandungi kiraan berapa kali setiap elemen muncul dalam senarai. Kami kemudian menapis Peta menggunakan kaedah penapis() untuk mencari elemen yang kiraan lebih besar daripada 1, menunjukkan bahawa ia adalah pendua.

Cara Membuat Pemain Media Mudah Menggunakan Java

Sumber: Sederhana Tutorial ini akan membantu anda mencipta pemain media ringkas dalam Java untuk memainkan fail audio dan video. Coffee break #209.  4 Cara Mencari Pendua dalam Senarai Java.  Cara membuat pemain media mudah menggunakan Java - 2Membangunkan pemain media boleh menjadi cara terbaik untuk mempelajari cara menggunakan perpustakaan terbina dalam Java untuk berfungsi dengan fail media. Untuk melaksanakan tugas ini, kami akan menggunakan JavaFX dan kit alat Antara Muka Pengguna Grafik (GUI) untuk Java.

Langkah 1: Persediaan Projek

Pertama, kami perlu menyediakan projek Java kami. Kami akan menggunakan Eclipse sebagai IDE, tetapi anda boleh menggunakan mana-mana IDE pilihan anda. Buat projek Java baharu dan namakannya "MediaPlayer". Kami juga perlu menambah perpustakaan JavaFX pada projek kami. Untuk melakukan ini, pergi ke sifat projek dan tambahkan perpustakaan JavaFX pada laluan binaan projek.

Langkah 2: Buat Antara Muka Pengguna

Seterusnya kami akan mencipta antara muka pengguna untuk pemain media kami. Ia akan menjadi antara muka pengguna yang ringkas dengan butang main, butang henti dan panel pemain media yang memaparkan fail video atau audio yang ingin kami mainkan. Untuk antara muka kami, kami akan menggunakan susun atur BorderPane . Panel pemain media akan berada di tengah-tengah BorderPane, dan butang main dan berhenti akan berada di bahagian bawah BorderPane. Berikut ialah kod 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);
    }
}
Dalam kod ini, kami mencipta dua butang: playButton dan stopButton . Apabila butang main diklik, kami memanggil kaedah main() objek mediaPlayer . Apabila butang berhenti diklik, kami memanggil kaedah stop() objek mediaPlayer . Kami juga mencipta objek Media dengan URL contoh fail video dan objek mediaPlayer dengan objek Media . Akhir sekali, kami mencipta objek MediaView dengan objek MediaPlayer dan menetapkannya sebagai pusat BorderPane .

Langkah 3. Menguji pemain media

Memandangkan kami mempunyai UI pemain media yang dikonfigurasikan, kami boleh mengujinya dengan melancarkan aplikasi. Apabila kami melancarkan aplikasi, UI pemain media akan muncul dan kami boleh mengklik butang main untuk mula memainkan fail video. Kami juga boleh mengklik butang berhenti untuk berhenti memainkan fail video.

Langkah 4: Menyediakan pemain media anda

Memandangkan kami mempunyai pemain media yang berfungsi, kami boleh menyesuaikannya mengikut keinginan kami. Kami boleh menukar reka letak antara muka pengguna, menukar fail video yang dimainkan, menambah butang tambahan untuk melaraskan kelantangan, atau menambah bar kemajuan untuk menunjukkan kemajuan video.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION