首頁 > Java > java教程 > 主體

如何使用Java 8從ArrayList中取得唯一值?

WBOY
發布: 2023-09-05 11:01:02
轉載
1407 人瀏覽過

如何使用Java 8从ArrayList中获取唯一值?

透過利用Java 8的函數式程式設計特性,如Stream API、串流和lambda表達式,從ArrayList中提取唯一值變得更簡單、更快。利用這些功能,您可以無需繁瑣的迭代或手動檢查就可以提取不同的元素;lambda表達式允許編寫簡潔而易讀的程式碼,使這個任務變得更簡單。無論是處理大型資料集還是僅僅消除重複項,Java 8都提供了強大而優雅的解決方案來從ArrayList中檢索唯一值

數組列表

Java 的 ArrayList 類別實作 List 接口,提供類似動態數組的功能,用於儲存和操作可調整數組中的元素集合。當在 ArrayList 陣列中新增或刪除元素時,其大小會自動調整,從而提供靈活性和便利性。

在ArrayList中存在多種方法來存取、修改、新增和刪除元素。可以使用get()方法存取元素,並使用set()方法進行修改;此外,還可以使用add()方法在列表的特定位置添加元素,使用remove()方法在特定位置刪除元素,或在列表末尾新增或刪除元素

ArrayList<String> names = new ArrayList<>();
登入後複製

方法

Java 8提供了幾種在arrayList中尋找唯一值的方法。下面是兩種經常使用的策略。

  • 使用Stream和distinct()

  • 使用哈希集

這兩種方法都提供了一種使用 Java 8 功能從 ArrayList 中提取唯一值的有效方法,因此只需選擇最能滿足您的要求和編碼風格的方法即可。

使用Stream和distinct()

首先,透過呼叫ArrayList的stream()方法將其轉換為流;然後在該流上使用 unique() 來過濾掉重複的值,以便只保留唯一的項目。為了從流中提取唯一值,帶有適當收集器的collect()方法允許檢索它們。

為了最佳使用distinct(),請確保ArrayList中的元素已正確重寫equals()方法以確保它們的唯一性,並正確定義自己作為不同的元素

演算法

  • 建立 ArrayList 並為其填滿元素。

  • 使用stream()方法將ArrayList轉換為串流

  • 在 Stream 上套用 unique() 方法以消除重複值並僅保留唯一值。

  • 使用collect()方法和適當的收集器將流轉換回ArrayList或其他適當的集合

  • 這個新的 ArrayList 將只包含來自其來源 ArrayList 的唯一值。

程式

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class UniqueValuesExample {
   public static void main(String[] args) {
      List<String> fruits = new ArrayList<>();
      fruits.add("Apple");
      fruits.add("Orange");
      fruits.add("Banana");
      fruits.add("Orange");
      fruits.add("Mango");
      fruits.add("Apple");

      List<String> uniqueFruits = fruits.stream()
         .distinct()
         .collect(Collectors.toList());

      System.out.println("Unique fruits: " + uniqueFruits);
   }
}
登入後複製

輸出

Unique fruits: [Apple, Orange, Banana, Mango]
登入後複製

使用 HashSet

啟動編輯器。將HashSet物件組裝為集合,該集合保存唯一元素,然後逐一遍歷ArrayList中的每個元素將其新增至HashSet中,注意任何出現的重複值。由於HashSet不允許重複值存在,ArrayList中的任何重複資料都會被HashSet自動消除

迭代 ArrayList 後,建立僅包含原始清單中唯一值的 HashSet 可讓您直接存取這些特定值或轉換回 ArrayList 以進行進一步存取。

這種方法利用了HashSet的固有唯一性約束,可以快速從ArrayList中檢索唯一的值,在Java 8中提供了一個方便的解決方案。

演算法

  • 建立 ArrayList 並為其填滿元素。

  • 建立一個 HashSet 物件。

  • 遍歷ArrayList中的每個元素

  • 使用add()方法將每個元素加入HashSet中

    • HashSet 將自動消除重複值,因為它只儲存唯一的值。

  • 遍歷 ArrayList 後,HashSet 將只包含原始清單中的那些唯一值。

  • 如果需要的話,可以將HashSet切換回ArrayList,或直接將其用作尋找其中唯一值的存取工具

程式

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class UniqueValuesExample {
   public static void main(String[] args) {
      List<String> animals = new ArrayList<>();
      animals.add("Lion");
      animals.add("Elephant");
      animals.add("Tiger");
      animals.add("Elephant");
      animals.add("Giraffe");
      animals.add("Lion");

      Set<String> uniqueAnimals = new HashSet<>(animals);

      System.out.println("Unique animals: " + uniqueAnimals);
   }
}
登入後複製

輸出

Unique animals: [Elephant, Lion, Tiger, Giraffe]
登入後複製

結論

在本教程中,我們了解了 Java 8 如何提供高效且優雅的解決方案來從 ArrayList 中提取唯一值。透過利用其Stream API 的unique() 方法並從ArrayList 中快速消除重複項以獲得新的唯一項,以及其函數式程式設計功能可實現簡潔而可讀的程式碼,開發人員可以輕鬆、快速、高效地完成此任務。

HashSet也可以透過使用ArrayList進行初始化來提供另一種有效的尋找唯一值的方法;任何重複的元素都會自動被消除,只留下其中的唯一條目。

Java 8在處理從ArrayList中提取唯一值的任務時的靈活性和便利性從這些方法中可以清楚地看出來;這兩種方法都利用了它的Stream API或HashSet實現,以實現最大的生產力,幫助開發人員輕鬆實現他們的目標。

以上是如何使用Java 8從ArrayList中取得唯一值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板