基於JDK8的List基本操作方法

//List轉換爲逗號分隔的字符串
List<Integer> list = Stream.of(1, 2, 3).collect(Collectors.toList());//jdk8 初始化List
String result=StringUtils.join(list .toArray(), ",");//list轉換爲逗號分隔的字符串
System.out.println("【List轉換爲逗號分隔字符串】:"+result);//1,2,3

//List取交集、差集、合集
List<Integer> list1 = Stream.of(1,2,3,6).collect(Collectors.toList());//jdk8 初始化List
List<Integer> list2 = Stream.of(1,2,3,7,9).collect(Collectors.toList());//jdk8 初始化List


// List差集 (list1 - list2 取出list1在list2中沒有的元素)
List<Integer> reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(toList());
System.out.println("【差集 reduce1 (list1 - list2)】:"+reduce1);//[6]


// List差集 (list2 - list1 取出list2在list1中沒有的元素)
List<Integer> reduce2 = list2.stream().filter(item -> !list1.contains(item)).collect(toList());
System.out.println("【差集 reduce2 (list2 - list1)】:"+reduce2);//[7, 9]

// List交集
List<Integer> intersection = list1.stream().filter(item -> list2.contains(item)).collect(toList());
System.out.println("【交集 intersection】:"+intersection);//[1, 2, 3]

// List合集(合併去重)
list1.addAll(list2);//合併
List newList = list1.stream().distinct().collect(Collectors.toList());//jdk8去重
System.out.println("【合併後去重result】:"+newList);//[1, 2, 3, 6, 7, 9]

 多個list取交集的方法如下:

public static List<String> retainElementList(List<List<String>> elementLists) {

    Optional<List<String>> result = elementLists.parallelStream()
            .filter(elementList -> elementList != null && ((List) elementList).size() != 0)
            .reduce((a, b) -> {
                a.retainAll(b);
                return a;
            });
    return result.orElse(new ArrayList<>());
}
發佈了66 篇原創文章 · 獲贊 31 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章