搜尋
首頁Javajava教程如何使用Java 8從ArrayList中取得唯一值?

如何使用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。如有侵權,請聯絡admin@php.cn刪除
如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器