地圖定義為: Map<Integer,String> map = new HashMap<>(); map.put(2,"ram"); map.put(3,"ram"); map.put(4,"gopal"); map.put(5,"madan"); map.put(6,"shyam"); map.put(7,"gopal"); map.put(8,"ram");我的預期輸出是列表,其中僅包含沒有重復值的鍵。56我的方法和思考過程:思考過程1:我將采取map.entrySet().stream().map(....)然后采取映射內的另一個流并過濾存在重復值的值。該方法很快就被浪費了,因為第一個索引值將在嵌套流中再次進行比較,并且我會碰巧過濾掉所有元素。思維過程2我通過以下List方式保持不同的值:List<String> subList = map.entrySet().stream() .map((k)->k.getValue()) .collect(Collectors.toList());進而: map.entrySet().stream() .filter(s -> subList.contains(s.getValue()) ) .map(Map.Entry::getKey) .collect(Collectors.toList());但我得到的輸出為2345678輸出是顯而易見的,因為我從流中選取的值是我在池中比較它的值,其中該值將始終至少出現一次。我再次想到,如果我可以有一個計數器來計數,并且如果該值存在,那么它就會增加,但現在一切似乎都非常模糊。我可以使用流通過索引進行迭代的任何方式,以便我始終可以保留我正在獲取的鍵值并僅與其余值進行比較。希望得到簡短的解釋。
從Map中提取沒有重復值的鍵
12345678_0001
2023-07-13 14:31:56