当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。