Rumah > Java > javaTutorial > Bagaimanakah saya mengira kejadian elemen dalam Java Stream menggunakan `groupBy()`?

Bagaimanakah saya mengira kejadian elemen dalam Java Stream menggunakan `groupBy()`?

Mary-Kate Olsen
Lepaskan: 2024-12-03 10:05:17
asal
651 orang telah melayarinya

How do I count occurrences of elements in a Java Stream using `groupBy()`?

Mengira Kejadian dengan GroupBy dalam Java Stream

Java Stream API menyediakan mekanisme berkuasa untuk memanipulasi dan mengagregatkan data dengan cekap. Satu tugas biasa ialah mengira kejadian unsur dalam aliran. Mencapai ini dengan kaedah groupBy() memerlukan memanfaatkan pengumpul tambahan.

Pertimbangkan coretan kod berikut, yang bertujuan untuk mengumpul elemen dalam strim ke dalam peta di mana kunci mewakili elemen unik dan nilai mewakili kejadiannya:

List<String> list = Arrays.asList("Hello", "Hello", "World");

// Desired output:
// {Hello=2, World=1}
Salin selepas log masuk

Untuk mencapai ini, kita boleh menggunakan kaedah groupBy() dengan pengumpul Collectors.counting() untuk melaksanakan mengira:

import java.util.*;
import java.util.stream.*;

class Test {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        list.add("Hello");
        list.add("Hello");
        list.add("World");

        Map<String, Long> counted = list.stream()
            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

        System.out.println(counted);
    }
}
Salin selepas log masuk

Penjelasan:

  • Collectors.groupingBy(Function.identity()): Mengumpulkan elemen berdasarkan identiti mereka, dengan berkesan menganggap setiap elemen unik sebagai kunci.
  • Collectors.counting(): Mengira bilangan kejadian untuk setiap kumpulan.

Peta dikira yang terhasil akan mempunyai kunci sebagai elemen dan nilai sebagai kiraan masing-masing:

{Hello=2, World=1}
Salin selepas log masuk

Sebagai alternatif, untuk pertimbangan kecekapan dalam senario tertentu, anda boleh meneroka menggunakan Pengumpul .groupingByConcurrent. Ingat untuk menilai sama ada kes penggunaan khusus anda sejajar dengan keperluan keselamatan pengelompokan serentak.

Atas ialah kandungan terperinci Bagaimanakah saya mengira kejadian elemen dalam Java Stream menggunakan `groupBy()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan