當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Array轉Set用法及代碼示例


Array 是一組由通用名稱引用的like-typed 變量。數組可以包含基元數據類型以及類的對象,具體取決於數組的定義。對於基元數據類型,實際值存儲在連續的內存位置中。對於類的對象,實際對象存儲在堆段中。 Set in Java 是 java.util 包的一部分,並擴展了 java.util.Collection 接口。它不允許使用重複元素,並且最多隻能容納一個空元素。 Java Set接口的幾個重要特性如下:

  • set 接口是對象的無序集合,其中不能存儲重複值。
  • Java Set 不提供對元素插入或刪除位置的控製。
  • 本質上,Set 是通過 HashSet、LinkedHashSet 或 TreeSet(排序表示)實現的。
  • Set 有各種添加、刪除、清除、大小等方法來增強該接口的使用。

例子:

Input: Array: [Geeks, forGeeks, A computer Portal] 
Output: Set: [Geeks, forGeeks, A computer Portal] 

Input: Array: [1, 2, 3, 4, 5] 
Output: Set: [1, 2, 3, 4, 5]

下麵是Java中將Array轉換為Set的方法:

方法 1:暴力或樸素方法:在此方法中,創建一個空 Set,並將 Array 中存在的所有元素一一添加到其中。

算法

  1. 獲取要轉換的數組。
  2. 創建一個空集
  3. 遍曆數組中的項目。
  4. 對於每個項目,將其添加到集合中
  5. 返回形成的Set

例子:

Java


// Java Program to convert 
// Array to Set 
  
import java.util.*; 
import java.util.stream.*; 
  
class GFG { 
  
    // Generic function to convert an Array to Set 
    public static <T> Set<T> convertArrayToSet(T array[]) 
    { 
  
        // Create an empty Set 
        Set<T> set = new HashSet<>(); 
  
        // Iterate through the array 
        for (T t : array) { 
            // Add each element into the set 
            set.add(t); 
        } 
  
        // Return the converted Set 
        return set; 
    } 
  
    public static void main(String args[]) 
    { 
        // Create an Array 
        String array[] 
            = { "Geeks", "forGeeks", "A Computer Portal" }; 
  
        // Print the Array 
        System.out.println("Array: "
                           + Arrays.toString(array)); 
  
        // convert the Array to Set 
        Set<String> set = convertArrayToSet(array); 
  
        // Print the Set 
        System.out.println("Set: " + set); 
    } 
}
輸出
Array: [Geeks, forGeeks, A Computer Portal]
Set: [A Computer Portal, Geeks, forGeeks]

方式二:使用Arrays.asList()方法:在該方法中,借助Arrays.asList()方法將Array作為參數以Array的形式傳遞到Set構造函數中。

算法

  1. 獲取要轉換的數組。
  2. 借助 Arrays.asList() 方法,通過將數組作為 Set 構造函數中的參數傳遞來創建 Set
  3. 返回形成的Set

示例

Java


// Java Program to convert 
// Array to Set 
  
import java.util.*; 
import java.util.stream.*; 
  
class GFG { 
  
    // Generic function to convert an Array to Set 
    public static <T> Set<T> convertArrayToSet(T array[]) 
    { 
  
        // Create the Set by passing the Array 
        // as parameter in the constructor 
        Set<T> set = new HashSet<>(Arrays.asList(array)); 
  
        // Return the converted Set 
        return set; 
    } 
  
    public static void main(String args[]) 
    { 
        // Create an Array 
        String array[] 
            = { "Geeks", "forGeeks", "A computer Portal" }; 
  
        // Print the Array 
        System.out.println("Array: "
                           + Arrays.toString(array)); 
  
        // convert the Array to Set 
        Set<String> set = convertArrayToSet(array); 
  
        // Print the Set 
        System.out.println("Set: " + set); 
    } 
}
輸出
Array: [Geeks, forGeeks, A computer Portal]
Set: [A computer Portal, Geeks, forGeeks]

方式3:使用Collections。addAll():由於Set是Java中Collection包的一部分。因此,可以借助 Collections.addAll() 方法將 Array 轉換為 Set。

算法

  1. 獲取要轉換的數組。
  2. 創建一個空集。
  3. 通過將數組作為參數傳遞給 Collections.addAll() 方法,將數組添加到 Set 中。
  4. 返回形成的Set

Java


// Java Program to convert 
// Array to Set 
  
import java.util.*; 
import java.util.stream.*; 
  
class GFG { 
  
    // Generic function to convert an Array to Set 
    public static <T> Set<T> convertArrayToSet(T array[]) 
    { 
  
        // Create the Set by passing the Array 
        // as parameter in the constructor 
        Set<T> set = new HashSet<>(); 
  
        // Add the array to set 
        Collections.addAll(set, Arrays.toString(array)); 
  
        // Return the converted Set 
        return set; 
    } 
  
    public static void main(String args[]) 
    { 
        // Create an Array 
        String array[] 
            = { "Geeks", "forGeeks", "A computer Portal" }; 
  
        // Print the Array 
        System.out.println("Array: " + array); 
  
        // convert the Array to Set 
        Set<String> set = convertArrayToSet(array); 
  
        // Print the Set 
        System.out.println("Set: " + set); 
    } 
}

輸出:

Array: [Geeks, forGeeks, A computer Portal]
Set: [Geeks, forGeeks, A computer Portal]

方式4:使用Java 8 Stream API:HashSet構造函數可以采用另一個集合對象來構造一個包含指定數組元素的新集合。算法:

  1. 獲取要轉換的數組。
  2. 將數組轉換為流
  3. 使用 Collectors 將 Stream 轉換為 Set。toSet()
  4. 使用collect()方法收集形成的集合
  5. 返回形成的Set

Java


// Java Program to convert 
// Array to Set in Java 8 
  
import java.util.*; 
import java.util.stream.*; 
  
class GFG { 
  
    // Generic function to convert array to set 
    public static <T> Set<T> convertArrayToSet(T array[]) 
    { 
        // create a set from the Array 
        return Arrays.stream(array).collect( 
            Collectors.toSet()); 
    } 
  
    public static void main(String args[]) 
    { 
        // Create an Array 
        String array[] 
            = { "Geeks", "forGeeks", "A computer Portal" }; 
  
        // Print the Array 
        System.out.println("Array: "
                           + Arrays.toString(array)); 
  
        // convert the Array to Set 
        Set<String> set = convertArrayToSet(array); 
  
        // Print the Set 
        System.out.println("Set: " + set); 
    } 
}
輸出
Array: [Geeks, forGeeks, A computer Portal]
Set: [A computer Portal, Geeks, forGeeks]

方式5:使用Guava Sets.newHashSet():Sets.newHashSet()創建一個包含指定數組元素的可變HashSet實例。算法:

  1. 獲取要轉換的數組。
  2. 創建一個空集。
  3. 通過將數組作為參數傳遞給 Sets.newHashSet() 方法,將數組添加到 Set 中。
  4. 返回形成的Set。

Java


// Java Program to convert 
// Array to Set in Java 8 
  
import static com.google.common.collect.Sets.*; 
import java.util.*; 
import java.util.stream.*; 
  
class GFG { 
  
    // Generic function to convert array to set 
    public static <T> Set<T> convertArrayToSet(T array[]) 
    { 
        // create a set from the Array 
        return Sets.newHashSet(array); 
    } 
  
    public static void main(String args[]) 
    { 
        // Create an Array 
        String array[] = { "Geeks", "forGeeks", 
                                    "A computer Portal" }; 
  
        // Print the Array 
        System.out.println("Array: " + Arrays.toString(array)); 
  
        // convert the Array to Set 
        Set<String> 
            set = convertArrayToSet(array); 
  
        // Print the Set 
        System.out.println("Set: " + set); 
    } 
} 

輸出:

Array: [Geeks, forGeeks, A computer Portal]
Set: [Geeks, forGeeks, A computer Portal]

方式6:使用Set.of()方法:要使用該方法,我們必須導入包java.util。它是在java 9中引入的。這是一個靜態工廠方法,用於返回set對象。此方法將返回不可變集實例,但我們可以通過在 HashSet 的構造函數中提供它來使其成為可變集。首先,輸入數組元素並聲明集合對象。調用轉換數組的方法來設置。現在,將數組作為參數傳遞並返回語句 new Hashset<>(Set.of(arrayname))。

Java


import java.util.*; 
  
class GFG { 
    public static <T> Set<T> convertArrayToSet(T array[]) 
    { 
        // create a set from the array 
        return new HashSet<>(Set.of(array)); 
    } 
    
    public static void main(String args[]) 
    { 
        // create an Array 
        String array[] = { "geeks", "forgeeks",  
                                    "learning","platform" }; 
    
        // printing the Array 
        System.out.println("Array: " + Arrays.toString(array)); 
    
        // declare the set object and call the function for conversion 
        Set<String> 
            set = convertArrayToSet(array); 
    
        // print the Set 
        System.out.println("Set: " + set); 
    } 
} 
輸出
Array: [geeks, forgeeks, learning, platform]
Set: [geeks, forgeeks, learning, platform]


相關用法


注:本文由純淨天空篩選整理自RishabhPrabhu大神的英文原創作品 Program to convert Array to Set in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。