返回列表 上一筆 下一筆

📄 資料內容

import java.util.*;

import java.util.stream.*;



public class FileRecordExample {

    public static void main(String[] args) {

        // 範例資料

        List<FileRecord> records = Arrays.asList(

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

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

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

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

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

        );



        // Step 1: grouping into Map<yyyymm, List<location>>

        Map<String, List<String>> grouped = records.stream()

            .collect(Collectors.groupingBy(

                r -> r.getYyyy() + r.getMm(),

                Collectors.mapping(FileRecord::getLocation, Collectors.toList())

            ));



        // Step 2: sort by key (yyyymm) descending into a LinkedHashMap

        LinkedHashMap<String, List<String>> sortedDesc = grouped.entrySet().stream()

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

            .collect(Collectors.toMap(

                Map.Entry::getKey,

                Map.Entry::getValue,

                (u, v) -> u,

                LinkedHashMap::new

            ));



        // 輸出結果

        sortedDesc.forEach((yyyymm, locs) ->

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

        );

    }

}

🔐 Base64 編碼內容

aW1wb3J0IGphdmEudXRpbC4qOwoKaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uKjsKCgoKcHVibGljIGNsYXNzIEZpbGVSZWNvcmRFeGFtcGxlIHsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CgogICAgICAgIC8vIOevhOS+i+izh+aWmQoKICAgICAgICBMaXN0PEZpbGVSZWNvcmQ+IHJlY29yZHMgPSBBcnJheXMuYXNMaXN0KAoKICAgICAgICAgICAgbmV3IEZpbGVSZWNvcmQoIjIwMjUiLCAiMDciLCAiVGFpcGVpIiksCgogICAgICAgICAgICBuZXcgRmlsZVJlY29yZCgiMjAyNSIsICIwNyIsICJLYW9oc2l1bmciKSwKCiAgICAgICAgICAgIG5ldyBGaWxlUmVjb3JkKCIyMDI1IiwgIjA2IiwgIlRhaWNodW5nIiksCgogICAgICAgICAgICBuZXcgRmlsZVJlY29yZCgiMjAyNSIsICIwNyIsICJUYWluYW4iKSwKCiAgICAgICAgICAgIG5ldyBGaWxlUmVjb3JkKCIyMDI1IiwgIjA2IiwgIlRhaWNodW5nIikKCiAgICAgICAgKTsKCgoKICAgICAgICAvLyBTdGVwIDE6IGdyb3VwaW5nIGludG8gTWFwPHl5eXltbSwgTGlzdDxsb2NhdGlvbj4+CgogICAgICAgIE1hcDxTdHJpbmcsIExpc3Q8U3RyaW5nPj4gZ3JvdXBlZCA9IHJlY29yZHMuc3RyZWFtKCkKCiAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMuZ3JvdXBpbmdCeSgKCiAgICAgICAgICAgICAgICByIC0+IHIuZ2V0WXl5eSgpICsgci5nZXRNbSgpLAoKICAgICAgICAgICAgICAgIENvbGxlY3RvcnMubWFwcGluZyhGaWxlUmVjb3JkOjpnZXRMb2NhdGlvbiwgQ29sbGVjdG9ycy50b0xpc3QoKSkKCiAgICAgICAgICAgICkpOwoKCgogICAgICAgIC8vIFN0ZXAgMjogc29ydCBieSBrZXkgKHl5eXltbSkgZGVzY2VuZGluZyBpbnRvIGEgTGlua2VkSGFzaE1hcAoKICAgICAgICBMaW5rZWRIYXNoTWFwPFN0cmluZywgTGlzdDxTdHJpbmc+PiBzb3J0ZWREZXNjID0gZ3JvdXBlZC5lbnRyeVNldCgpLnN0cmVhbSgpCgogICAgICAgICAgICAuc29ydGVkKE1hcC5FbnRyeS48U3RyaW5nLExpc3Q8U3RyaW5nPj5jb21wYXJpbmdCeUtleShDb21wYXJhdG9yLnJldmVyc2VPcmRlcigpKSkKCiAgICAgICAgICAgIC5jb2xsZWN0KENvbGxlY3RvcnMudG9NYXAoCgogICAgICAgICAgICAgICAgTWFwLkVudHJ5OjpnZXRLZXksCgogICAgICAgICAgICAgICAgTWFwLkVudHJ5OjpnZXRWYWx1ZSwKCiAgICAgICAgICAgICAgICAodSwgdikgLT4gdSwKCiAgICAgICAgICAgICAgICBMaW5rZWRIYXNoTWFwOjpuZXcKCiAgICAgICAgICAgICkpOwoKCgogICAgICAgIC8vIOi8uOWHuue1kOaenAoKICAgICAgICBzb3J0ZWREZXNjLmZvckVhY2goKHl5eXltbSwgbG9jcykgLT4KCiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih5eXl5bW0gKyAiIC0+ICIgKyBsb2NzKQoKICAgICAgICApOwoKICAgIH0KCn0K
返回列表 上一筆 下一筆