Rumah  >  Artikel  >  Java  >  Bagaimanakah Saya Boleh Mengira Kejadian Rentetan dalam Senarai Menggunakan Aliran Java?

Bagaimanakah Saya Boleh Mengira Kejadian Rentetan dalam Senarai Menggunakan Aliran Java?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-11 06:39:02669semak imbas

How Can I Count String Occurrences in a List Using Java Streams?

Mengira Kejadian dengan groupBy

Kaedah groupBy dalam aliran Java membolehkan kami mengumpul elemen ke dalam kumpulan berdasarkan kunci yang ditentukan. Dalam kes ini, kami ingin mengumpulkan rentetan mengikut nilainya dan mengira kejadian dalam setiap kumpulan.

Untuk mencapai ini, kami boleh menggunakan lebihan groupBy yang memerlukan Pemungut kedua. Kami akan menyediakan Collectors.counting() sebagai Collector ini, yang akan mengira elemen dalam setiap kumpulan.

Begini cara untuk melaksanakan ini menggunakan strim:

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);
    }
}

Ini akan menghasilkan yang berikut output:

{Hello=2, World=1}

Peta mengandungi dua entri, dengan "Hello" dipetakan kepada 2 dan "Dunia" dipetakan kepada 1. Ini mewakili kiraan kejadian bagi setiap perkataan dalam senarai input.

Perhatikan bahawa kami juga boleh menggunakan groupingByConcurrent untuk meningkatkan kecekapan, terutamanya dalam senario di mana pelaksanaan serentak adalah selamat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Kejadian Rentetan dalam Senarai Menggunakan Aliran Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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