📜  如何从Java中的向量中删除重复元素?

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

如何从Java中的向量中删除重复元素?

使用 LinkedHashSet 和 TreeSet,删除重复元素。因为 LinkedHashSet 和 TreeSet 不接受重复元素。

例子:

Input : vector = [1, 2, 3, 4, 2, 4]
Output: vector = [1, 2, 3, 4]

Input : vector = [a, b, a, c, d, a]
Output: vector = [a, b, c, d]

方法一:使用 LinkedHashSet

LinkedHashSet 不接受重复元素,也不维护排序顺序。

  1. 创建向量并在向量中添加元素。
  2. 创建 LinkedHashSet 并将向量对象传递给 LinkedHashSet 的构造函数。
  3. 清除向量的所有元素。
  4. 将 LinkedHashSet 的所有元素添加到向量中。

下面是上述方法的实现:

Java
// Java Program to remove duplicate 
// elements from Vector
import java.util.LinkedHashSet;
import java.util.Vector;
  
public class GFG {
  
    public static void main(String[] args)
    {
  
        Vector vector = new Vector();
  
        vector.add(2);
        vector.add(2);
        vector.add(4);
        vector.add(2);
        vector.add(3);
        vector.add(2);
        vector.add(1);
  
        // display original elements
        System.out.println("Display original Vector - "
                           + vector);
  
        // convert Vector to a LinkedHashSet object.
        LinkedHashSet hashSet
            = new LinkedHashSet(vector);
  
        // clear all elements of vector
        vector.clear();
  
        // add all unique elements LinkedHashSet to the
        // vector
        vector.addAll(hashSet);
  
        // display vector after removing duplicate elements
        System.out.println(
            "After removing duplicate elements - "
            + vector);
    }
}


Java
// Java Program to remove duplicate 
// elements from Vector
import java.util.TreeSet;
import java.util.Vector;
  
public class GFG {
  
    public static void main(String[] args)
    {
  
        // create vector
        Vector vector = new Vector();
  
        // add elements in vector
        vector.add(4);
        vector.add(2);
        vector.add(3);
        vector.add(1);
        vector.add(3);
        vector.add(2);
        vector.add(4);
  
        // display original vector
        System.out.println("Display original Vector - "
                           + vector);
  
        // convert Vector to a TreeSet object.
        TreeSet treeSet
            = new TreeSet(vector);
  
        // clear all elements of vector
        vector.clear();
  
        // add all unique elements of TreeSet to the vector
        vector.addAll(treeSet);
  
        // display vector after removing duplicate elements
        System.out.println(
            "After removing duplicate elements - "
            + vector);
    }
}


输出
Display original Vector - [2, 2, 4, 2, 3, 2, 1]
After removing duplicate elements - [2, 4, 3, 1]

时间复杂度: O(N),其中 N 是原始向量的长度。

方法 2:树集

TreeSet 不接受重复元素并且 TreeSet 保持排序顺序。

  1. 创建向量并在向量中添加元素。
  2. 创建 TreeSet 并将向量对象传递给 TreeSet 的构造函数。
  3. 清除向量的所有元素。
  4. 将 TreeSet 的所有元素添加到向量中。

下面是上述方法的实现:

Java

// Java Program to remove duplicate 
// elements from Vector
import java.util.TreeSet;
import java.util.Vector;
  
public class GFG {
  
    public static void main(String[] args)
    {
  
        // create vector
        Vector vector = new Vector();
  
        // add elements in vector
        vector.add(4);
        vector.add(2);
        vector.add(3);
        vector.add(1);
        vector.add(3);
        vector.add(2);
        vector.add(4);
  
        // display original vector
        System.out.println("Display original Vector - "
                           + vector);
  
        // convert Vector to a TreeSet object.
        TreeSet treeSet
            = new TreeSet(vector);
  
        // clear all elements of vector
        vector.clear();
  
        // add all unique elements of TreeSet to the vector
        vector.addAll(treeSet);
  
        // display vector after removing duplicate elements
        System.out.println(
            "After removing duplicate elements - "
            + vector);
    }
}
输出
Display original Vector - [4, 2, 3, 1, 3, 2, 4]
After removing duplicate elements - [1, 2, 3, 4]

时间复杂度: O(n log n),因为 TreeSet 使用 RedBlack 树实现。