[英]how to check if vector element is present in hashset or not in java?
我必須返回不包含重復元素的向量。
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
}
}
關於這段代碼的很多問題......
為什么是Vector
? 為什么不直接把Collection
作為參數,為什么不返回Set
呢?
總之,真的只是
static Vector<Integer> removeDuplicates(Vector<Integer> arr) {
return new Vector<>(new HashSet<>(arr));
}
如果你堅持簽名。
或者
static <T> Vector<T> removeDuplicates(Vector<T> arr)) { // ...
如果你想要通用版本。 但我再次推薦
static <T> Set<T> removeDuplicates(Collection<T> arr)) { // ...
return new new HashSet<>(arr);
}
並通過內聯完全擺脫代碼。
這是您嘗試執行的操作的代碼:
程序的輸出是:
[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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.