如何从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 不接受重复元素,也不维护排序顺序。
- 创建向量并在向量中添加元素。
- 创建 LinkedHashSet 并将向量对象传递给 LinkedHashSet 的构造函数。
- 清除向量的所有元素。
- 将 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 保持排序顺序。
- 创建向量并在向量中添加元素。
- 创建 TreeSet 并将向量对象传递给 TreeSet 的构造函数。
- 清除向量的所有元素。
- 将 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 树实现。