Java 如何检查hashset中是否存在向量元素?
我必须返回不包含重复元素的向量Java 如何检查hashset中是否存在向量元素?,java,vector,hashset,Java,Vector,Hashset,我必须返回不包含重复元素的向量 static Vector removeDuplicates(Vector<Integer> arr) { Vector<Integer> v =new Vector<>(); Set<Integer> set=new HashSet<Integer>(); for(int i=0;i<arr.size();i++) { if(!set.co
static Vector removeDuplicates(Vector<Integer> arr)
{
Vector<Integer> v =new Vector<>();
Set<Integer> set=new HashSet<Integer>();
for(int i=0;i<arr.size();i++)
{
if(!set.contains(arr[i]))// it says array required but found vector
}
}
以下是您尝试执行的操作的代码: 程序的输出为:
[1, 2, 3, 1, 2, 4]
[1, 2, 3, 4]
但我建议您使用list、arraylist或任何其他数据结构,因为现在java中没有人使用vector
在代码中,首先需要检查当前元素是否存在于集合中(如果不存在),然后只将元素添加到要返回的新向量中
package test;
import java.util.HashSet;
import java.util.Set;
import java.util.Vector;
public class test {
public static void main(String[] args) {
Vector<Integer> vector = new Vector<>();
vector.addElement(1);
vector.addElement(2);
vector.addElement(3);
vector.addElement(1);
vector.addElement(2);
vector.addElement(4);
System.out.println(vector);
vector = removeDuplicates(vector);
System.out.println(vector);
}
static Vector<Integer> removeDuplicates(Vector<Integer> vector) {
Vector<Integer> v = new Vector<>();
Set<Integer> set = new HashSet<Integer>();
for (int i = 0; i < vector.size(); i++) {
if (set.add(vector.elementAt(i))) {
v.addElement(vector.elementAt(i));
}
}
return v;
}
}
关于这个代码有很多问题 为什么是向量?为什么它不把集合作为一个参数,为什么不返回集合呢 不管怎么说,这真的只是
static Vector<Integer> removeDuplicates(Vector<Integer> arr) {
return new Vector<>(new HashSet<>(arr));
}
如果你坚持签名的话
或
如果您想要通用版本。
但我还是建议
static <T> Set<T> removeDuplicates(Collection<T> arr)) { // ...
return new new HashSet<>(arr);
}
并通过内联将代码完全删除。arr.geti…向量已被弃用,请使用List.HashSet不允许重复元素。如果出现以下情况,您不必检查状况!集.容器R[i]
static <T> Set<T> removeDuplicates(Collection<T> arr)) { // ...
return new new HashSet<>(arr);
}