Javalist取交集

一、概述

在編程中,經常需要對數據進行比較和處理,而對兩個或多個列表取交集是一種常見的需求。在Java中,我們可以使用Collections類提供的retainAll()方法很方便地實現兩個列表的交集操作。

二、使用retainAll()方法取交集

retainAll()方法是集合類中的一個方法,它可以從一個集合中移除所有不包含在另一個集合中的元素,返回一個新的集合對象。使用retainAll()方法取兩個列表的交集非常簡單,只需要將一個列表作為參數傳遞給另一個列表的retainAll()方法即可。例如:

List<String> list1 = new ArrayList<String>();
list1.add("apple");
list1.add("banana");
list1.add("orange");

List<String> list2 = new ArrayList<String>();
list2.add("banana");
list2.add("orange");
list2.add("pear");

list1.retainAll(list2); // 取list1和list2的交集,list1變為["banana", "orange"]

System.out.println(list1); // 輸出[banana, orange]

在上面的代碼中,我們創建了兩個字符串類型的列表list1和list2,然後分別向它們添加了不同的元素。使用list1.retainAll(list2)語句,我們取得了兩個列表的交集,結果存儲在了list1中。

三、實現取多個列表的交集

如果我們需要對多個列表取交集,我們可以使用類似上面的代碼,分別將每個列表與交集進行處理。但是這種方式顯然很繁瑣,效率也不高。我們可以使用Java 8引入的新特性Stream,來實現對多個列表取交集的操作。

首先,我們需要將多個列錶轉換成Stream對象,然後使用reduce()方法和retainAll()方法將它們逐個取交集:

List<String> list1 = new ArrayList<String>();
list1.add("apple");
list1.add("banana");
list1.add("orange");

List<String> list2 = new ArrayList<String>();
list2.add("banana");
list2.add("orange");
list2.add("pear");

List<String> list3 = new ArrayList<String>();
list3.add("orange");
list3.add("pear");
list3.add("grape");

List<List<String>> lists = Arrays.asList(list1, list2, list3);

List<String> result = lists.stream()
                          .reduce((l1, l2) -> {
                                        l1.retainAll(l2);
                                        return l1;
                                     })
                          .orElse(new ArrayList<String>());

System.out.println(result); // 輸出[orange]

在上面的代碼中,我們創建了三個字符串類型的列表list1、list2和list3,然後創建了一個List<List<String>>類型的列表lists,將三個列表作為元素添加到其中。使用lists.stream()方法將它轉換成一個Stream對象,然後使用reduce()方法和retainAll()方法,對它進行逐個的取交集操作,最終得到交集結果。

四、使用HashSet進行取交集操作

除了使用Java提供的retainAll()方法和Stream特性以外,我們還可以使用HashSet來實現對多個列表取交集的操作。

HashSet是Java中的一種存儲Set元素的集合,它可以很方便地完成對集合元素的取交集、並集和差集等操作。通過HashSet的addAll()方法可以將多個列錶轉換成Set類型的對象,然後使用retainAll()方法進行交集操作,最終再將交集結果轉換成List類型的對象,並按照原有的順序進行排序。例如:

List<String> list1 = new ArrayList<String>();
list1.add("apple");
list1.add("banana");
list1.add("orange");

List<String> list2 = new ArrayList<String>();
list2.add("banana");
list2.add("orange");
list2.add("pear");

List<String> list3 = new ArrayList<String>();
list3.add("orange");
list3.add("pear");
list3.add("grape");

Set<String> set = new HashSet<String>();

set.addAll(list1);
set.retainAll(list2);
set.retainAll(list3);

List<String> result = new ArrayList<String>(set);
Collections.sort(result);

System.out.println(result); // 輸出["orange"]

在上面的代碼中,我們首先創建了三個字符串類型的列表list1、list2和list3,然後使用HashSet的addAll()方法將它們轉換成了一個Set類型的對象。使用set.retainAll()方法進行交集操作,得到交集的結果。最後,將交集結果轉換成一個List類型的對象,並按照原有的順序進行排序,得到最終結果。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/231542.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 01:05
下一篇 2024-12-11 01:06

相關推薦

  • Javalist取差集操作詳解

    在Java編程中,javalist取差集操作是非常常見和實用的一個操作。具體來說,這個操作是指從一個列表中去掉另一個列表中的元素,即找到兩個列表不同的部分。 一、常用的javali…

    編程 2025-02-27
  • Javalist交集詳解

    一、Javalist交集概述 Javalist交集是指兩個或多個集合中共同擁有的元素。在Java中,我們可以使用Collections類的靜態方法intersection來獲取兩個…

    編程 2025-02-11
  • 詳解javalist差集

    一、什麼是javalist差集 在Java中,List是非常基礎的數據類型,而javalist差集是List的一種操作。它可以用來比較兩個List中的元素,返回一個只包含第一個Li…

    編程 2025-02-05
  • JAVAlist,javalist轉數組

    本文目錄一覽: 1、Java的List如何實現線程安全? 2、java中list後面加是什麼意思? 3、java list集合什麼意思 Java的List如何實現線程安全? Jav…

    編程 2025-01-20
  • JavaList長度

    Java中提供了很多數據結構以及對應的方法,其中JavaList便是其中之一。JavaList提供了很多方便的方法,其中有一個非常基礎的方法——獲取List的長度,即List中元素…

    編程 2025-01-07
  • JavaList篩選詳解

    一、JavaList 簡介 JavaList 是一種常見的數據結構,它是一個有序的集合,可以存儲重複的元素。JavaList 是 Java API 中最為常用的集合之一,可以根據索…

    編程 2025-01-05
  • JavaList長度的重要性

    一、JavaList的長度表示數據量大小 JavaList是一種常用的數據結構,可以存儲許多數據。JavaList可以動態增加或減少元素,因此其長度可以顯示數據量的大小。在很多場景…

    編程 2025-01-03
  • JavaList的foreach函數詳解

    在Java程序中,我們經常會遇到需要操作一個列表(List)的情況。對於這種情況,Java語言提供了一種便捷的方式,那就是使用foreach函數來遍歷List中的元素。 一、for…

    編程 2024-12-26
  • javalist轉string數組

    一、從string轉char數組 在將javalist轉string數組之前,我們需要了解如何將string轉換為char數組。 char數組是一組unicode編碼字符序列,每個…

    編程 2024-12-26
  • Javalist刪除元素

    一、List概述 List是Java中集合框架中的一種接口,可以用來存放一組有序的元素,每一個元素都有一個對應的整數索引。List中的元素允許重複,所有元素都是以插入的先後順序保存…

    編程 2024-12-22

發表回復

登錄後才能評論