Java 中使用 Java 8 的流獲取 List 中的重復元素
案例如下:
import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class Repetition { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("張三"); list.add("李四"); list.add("張三"); list.add("王五"); List<String> collect = list.stream().collect(Collectors.toMap(e -> e, e -> 1, (a, b) -> a + b)) //獲得元素出現頻率的 Map,鍵為元素,值為元素出現的次數 .entrySet().stream() //Set<Entry>轉換為Stream<Entry> .filter(entry -> entry.getValue() > 1) //過濾出元素出現次數大於 1 的 entry .map(entry -> entry.getKey()) // 獲得 entry 的鍵(重復元素)對應的 Stream .collect(Collectors.toList());// 轉化為 List System.out.println(collect); } }
執行結果如下:
[張三]