返回列表 上一筆 下一筆

📄 資料內容

import java.util.*;

import java.util.stream.*;



public class CountByYearMonth {

    public static void main(String[] args) {

        List<FileRecord> records = Arrays.asList(

            new FileRecord("2025", "07", "Taipei"),

            new FileRecord("2025", "07", "Kaohsiung"),

            new FileRecord("2025", "07", "Taipei"),

            new FileRecord("2025", "06", "Taichung"),

            new FileRecord("2025", "06", "Hsinchu")

        );



        // Group by yyyyMM, then count how many records per group

        Map<String, Long> countMap = records.stream()

            .collect(Collectors.groupingBy(

                r -> r.getYyyy() + r.getMm(),     // key: "yyyyMM"

                Collectors.counting()             // downstream: count elements

            ));



        // If you also want it sorted descending by yyyymm:

        LinkedHashMap<String, Long> sortedCountDesc = countMap.entrySet().stream()

            .sorted(Map.Entry.<String, Long>comparingByKey(Comparator.reverseOrder()))

            .collect(Collectors.toMap(

                Map.Entry::getKey,

                Map.Entry::getValue,

                (u, v) -> u,

                LinkedHashMap::new

            ));



        // Print results

        sortedCountDesc.forEach((yyyymm, cnt) ->

            System.out.println(yyyymm + " -> " + cnt)

        );

    }

}

🔐 Base64 編碼內容

aW1wb3J0IGphdmEudXRpbC4qOwoKaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uKjsKCgoKcHVibGljIGNsYXNzIENvdW50QnlZZWFyTW9udGggewoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCiAgICAgICAgTGlzdDxGaWxlUmVjb3JkPiByZWNvcmRzID0gQXJyYXlzLmFzTGlzdCgKCiAgICAgICAgICAgIG5ldyBGaWxlUmVjb3JkKCIyMDI1IiwgIjA3IiwgIlRhaXBlaSIpLAoKICAgICAgICAgICAgbmV3IEZpbGVSZWNvcmQoIjIwMjUiLCAiMDciLCAiS2FvaHNpdW5nIiksCgogICAgICAgICAgICBuZXcgRmlsZVJlY29yZCgiMjAyNSIsICIwNyIsICJUYWlwZWkiKSwKCiAgICAgICAgICAgIG5ldyBGaWxlUmVjb3JkKCIyMDI1IiwgIjA2IiwgIlRhaWNodW5nIiksCgogICAgICAgICAgICBuZXcgRmlsZVJlY29yZCgiMjAyNSIsICIwNiIsICJIc2luY2h1IikKCiAgICAgICAgKTsKCgoKICAgICAgICAvLyBHcm91cCBieSB5eXl5TU0sIHRoZW4gY291bnQgaG93IG1hbnkgcmVjb3JkcyBwZXIgZ3JvdXAKCiAgICAgICAgTWFwPFN0cmluZywgTG9uZz4gY291bnRNYXAgPSByZWNvcmRzLnN0cmVhbSgpCgogICAgICAgICAgICAuY29sbGVjdChDb2xsZWN0b3JzLmdyb3VwaW5nQnkoCgogICAgICAgICAgICAgICAgciAtPiByLmdldFl5eXkoKSArIHIuZ2V0TW0oKSwgICAgIC8vIGtleTogInl5eXlNTSIKCiAgICAgICAgICAgICAgICBDb2xsZWN0b3JzLmNvdW50aW5nKCkgICAgICAgICAgICAgLy8gZG93bnN0cmVhbTogY291bnQgZWxlbWVudHMKCiAgICAgICAgICAgICkpOwoKCgogICAgICAgIC8vIElmIHlvdSBhbHNvIHdhbnQgaXQgc29ydGVkIGRlc2NlbmRpbmcgYnkgeXl5eW1tOgoKICAgICAgICBMaW5rZWRIYXNoTWFwPFN0cmluZywgTG9uZz4gc29ydGVkQ291bnREZXNjID0gY291bnRNYXAuZW50cnlTZXQoKS5zdHJlYW0oKQoKICAgICAgICAgICAgLnNvcnRlZChNYXAuRW50cnkuPFN0cmluZywgTG9uZz5jb21wYXJpbmdCeUtleShDb21wYXJhdG9yLnJldmVyc2VPcmRlcigpKSkKCiAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMudG9NYXAoCgogICAgICAgICAgICAgICAgTWFwLkVudHJ5OjpnZXRLZXksCgogICAgICAgICAgICAgICAgTWFwLkVudHJ5OjpnZXRWYWx1ZSwKCiAgICAgICAgICAgICAgICAodSwgdikgLT4gdSwKCiAgICAgICAgICAgICAgICBMaW5rZWRIYXNoTWFwOjpuZXcKCiAgICAgICAgICAgICkpOwoKCgogICAgICAgIC8vIFByaW50IHJlc3VsdHMKCiAgICAgICAgc29ydGVkQ291bnREZXNjLmZvckVhY2goKHl5eXltbSwgY250KSAtPgoKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHl5eXltbSArICIgLT4gIiArIGNudCkKCiAgICAgICAgKTsKCiAgICB9Cgp9Cg==
返回列表 上一筆 下一筆