การทำซ้ำรายการวัตถุ Hash Map โดยใช้ Java 8 Streams [ปิด]

Sep 20 2020

ฉันต้องทำซ้ำรายการวัตถุ HashMap หากค่าวัตถุแผนที่เป็นจริงฉันต้องส่งคืนรายการนั้นไปยังวัตถุแฮชแมปหนึ่งรายการโดยใช้ java 8 stream API


public class HashMapCheck {
    static Map<String, Boolean> map;
    static Map<String, Boolean> map2;
    static List<Map> objMap;

    public static void main(String args[]) {
        map = new HashMap<String, Boolean>();
        map.put("1", true);
        map.put("2", false);

        map2 = new HashMap<String, Boolean>();
        map2.put("4", true);
        map2.put("5", true);
        objMap = new ArrayList<Map>();
        objMap.add(map);
        objMap.add(map2);

        //Iterate
    }
}

คำตอบ

Steve Sep 20 2020 at 01:42

ฉันไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับสตรีม Java ดังนั้นนี่อาจไม่ใช่วิธีแก้ปัญหาขั้นต่ำ แต่นี่คือสิ่งที่ฉันคิดขึ้นโดยใช้สตรีมเพื่อให้ได้สิ่งที่ฉันคิดว่าคุณต้องการ:

public class HashMapCheck {
    static Map<String, Boolean> map;
    static Map<String, Boolean> map2;
    static List<Map<String, Boolean>> objMap;

    public static void main(String[] args) {

        map = new HashMap<>();
        map.put("1", true);
        map.put("2", false);

        map2 = new HashMap<>();
        map2.put("4", true);
        map2.put("5", true);
        objMap = new ArrayList<>();
        objMap.add(map);
        objMap.add(map2);

        Map<String, Boolean> result = objMap.stream().flatMap(x -> x.entrySet().stream()).filter(Map.Entry::getValue).
                collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

        System.out.println(result);

    }
}

ผลลัพธ์:

{1=true, 4=true, 5=true}