📜  在Java中将数组转换为 HashSet

📅  最后修改于: 2022-05-13 01:55:39.990000             🧑  作者: Mango

在Java中将数组转换为 HashSet

单一的数据结构不能满足程序员的要求,这就是为什么在编程语言中有很多内置的数据结构。

数组是大多数编程语言中最常用的数据结构。这种数据结构的优点是在索引的帮助下访问数组的元素为 O(1),但最常见的缺点是我们不能在创建后更改数组的大小,并且删除元素是一个复杂的过程数组。

集合:在Java中,任何一组表示为单个单元的单个对象都称为对象的集合。在Java中,JDK 1.2 中定义了一个名为“集合框架”的单独框架,它包含所有集合类和接口。集合分为有序集合和未排序集合两部分,bot 各有利弊。 Sorted Set 即 TreeSet 对其唯一元素进行排序,但 TreeSet 的时间复杂度为 O(N log N) 但未排序的 Sets(例如 HashSet 和 LinkedSet)确实改变了元素的顺序,但 HashSet 和 LinkedSet 之间的区别在于其随机顺序元素。

例子:

Input : Array: [1, 2, 3, 4, 5, 6]
Output: Set: [1, 2, 3, 4, 5, 6]
 
Input : Array: [a, b, c, d]
Output: Set: [a, b, c, d]

方法:蛮力或朴素方法

创建一个空集(如果需要未排序的元素,则为 HashSet) 迭代数组的元素并将其一一添加到该集合中。

例子:

Java
// Convert array to HashSet in Java
import java.io.*;
import java.util.Iterator;
// Importing Set libraries
import java.util.Set;
import java.util.HashSet;
  
class GFG {
    // Function to convert array to set
    static Set convert(int[] array)
    {
        // Hash Set Initialisation
        Set Set = new HashSet<>();
  
        // Iteration using enhanced for loop
        for (int element : array) {
            Set.add(element);
        }
        // returning the set
        return Set;
    }
  
    // Function to print the set
    static void print(Set Set)
    {
        // Implement to iterator the Set
        Iterator _iterator = Set.iterator();
  
        // Iterate the elements of Set
        while (_iterator.hasNext()) {
            // print the element of the Set
            System.out.print(_iterator.next() + " ");
        }
    }
    public static void main(String[] args)
  
    {
  
        // Array taken for consideration
        int array[] = { 1, 2, 3, 4, 5, 6 };
  
        // Calling function to convert the array
        Set Set = convert(array);
  
        // print the set
        print(Set);
    }
}


Java
// Convert Array to HashSet in Java
  
import java.util.*;
import java.util.stream.*;
  
class GFG {
  
    // Generic function to convert array to set
    public static  Set 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 set = convertArrayToSet(array);
  
        // Print the Set
        System.out.println("Set: " + set);
    }
}


输出
1 2 3 4 5 6

方法二

使用Java 8 Stream API: HashSet 构造函数可以采用另一个集合对象来构造一个包含指定数组元素的新集合。

  1. 获取要转换的数组。
  2. 将数组转换为 Stream
  3. 使用 Collectors.toSet() 将 Stream 转换为 Set
  4. 使用 collect() 方法收集形成的集合
  5. 返回形成的 Set。

例子:

Java

// Convert Array to HashSet in Java
  
import java.util.*;
import java.util.stream.*;
  
class GFG {
  
    // Generic function to convert array to set
    public static  Set 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 set = convertArrayToSet(array);
  
        // Print the Set
        System.out.println("Set: " + set);
    }
}
输出
Array: [Geeks, forGeeks, A computer Portal]
Set: [A computer Portal, Geeks, forGeeks]