Java 删除数据结构向量中的重复项
我有一个Java 删除数据结构向量中的重复项,java,data-structures,vector,duplicates,Java,Data Structures,Vector,Duplicates,我有一个向量,每个单元格都包含一个数据结构: public class objet_poid_n { public int Num; public double Poid; } 问题是向量可能有重复项,我需要创建一个能够删除重复项的函数或过程。。 我试过这个,但没用 public static void removeDuplicates(Vector v) { for(int i=0;i<v.size();i++){ for(int j
向量
,每个单元格都包含一个数据结构
:
public class objet_poid_n {
public int Num;
public double Poid;
}
问题是向量可能有重复项,我需要创建一个能够删除重复项的函数或过程。。
我试过这个,但没用
public static void removeDuplicates(Vector v)
{
for(int i=0;i<v.size();i++){
for(int j=0;j<v.size();j++)
{
if(i!=j)
{
if(v.elementAt(i).equals(v.elementAt(j)))
{
v.removeElementAt(j);
}
}
}
}
}
移除的公共静态无效副本(向量v)
{
对于(int i=0;i当考虑如何删除重复时,总是首先考虑A。根据定义,<代码> SET/CODE >为
不包含重复元素的集合
迭代数组并将它们添加到集合
实现中。如果顺序很重要,请使用
集合
中的元素将是唯一的。您可以将它们添加回新的列表
或clear()
旧列表,然后添加到那里
注意:您应该在objet\u poid\n
类中实现hashCode()
和equals(Object)
方法
< > >强> > No.2/强>如果你是“代码> vector .java。UTIL。矢量< /代码>,请不要使用它。使用<代码> ARAYLIST/<代码>或<代码> Link KEdList < P>当考虑如何删除重复时,总是首先考虑A。根据定义,<代码> SET/CODE >
Set<String> set = new HashSet<String>();
set.addAll(list);
list.clear();
list.addAll(set);
不包含重复元素的集合
迭代数组并将它们添加到集合
实现中。如果顺序很重要,请使用
集合
中的元素将是唯一的。您可以将它们添加回新的列表
或clear()
旧列表,然后添加到那里
注意:您应该在objet\u poid\n
类中实现hashCode()
和equals(Object)
方法
注2:如果您所说的Vector
是指java.util.Vector
,请不要使用它。请使用ArrayList
或LinkedList
Set=new HashSet();
Set<String> set = new HashSet<String>();
set.addAll(list);
list.clear();
list.addAll(set);
set.addAll(列表);
list.clear();
列表。添加全部(集合);
Set Set=new HashSet();
set.addAll(列表);
list.clear();
列表。添加全部(集合);
删除数组中的元素将更改大小,您将尝试访问不再存在的索引
最简单的解决方案是:
在对象中实现hashcode
/等于
将所有元素添加到HashSet
然后,您的集合
将只包含每个元素的一个实例
阅读有关hashcode
/equals
和HashSet
的内容(如有必要)。这是值得的。删除数组中的元素将更改大小,您将尝试访问不再存在的索引
最简单的解决方案是:
在对象中实现hashcode
/等于
将所有元素添加到HashSet
然后,您的集合
将只包含每个元素的一个实例
阅读hashcode
/equals
和HashSet
,如果需要的话。这是值得你花时间的。首先你应该在你的对象中实现一个equals()
方法,因为
然后,您可以在向量中插入新对象之前使用该方法,或者使用集合
,根据定义,这是一个没有重复项的集合。首先,您应该在对象中实现equals()
方法,因为
然后,您可以在向量中插入新对象之前使用该方法,也可以使用一个集,根据定义,该集是一个没有重复项的集合。使用下面的方法从向量中删除重复元素
公共静态向量RemovedUpplicateResults(向量结果向量)
{
for(int i=0;i使用下面的方法从向量中删除重复元素
公共静态向量RemovedUpplicateResults(向量结果向量)
{
for(int i=0;i在我使用数据作为局部变量的情况下,可以重写add或addAll方法:
data = new Vector<String>() {
@Override
public synchronized boolean addAll(Collection<? extends String> arg0) {
// TODO Auto-generated method stub
Vector<String> v = (Vector<String>) arg0;
for (String string : v) {
if (contains(string)) {
return false;
}
}
return super.addAll(v);
}
};
data=newvector(){
@凌驾
public synchronized boolean addAll(Collection在我使用数据作为局部变量的情况下,您可以重写add或addAll方法:
data = new Vector<String>() {
@Override
public synchronized boolean addAll(Collection<? extends String> arg0) {
// TODO Auto-generated method stub
Vector<String> v = (Vector<String>) arg0;
for (String string : v) {
if (contains(string)) {
return false;
}
}
return super.addAll(v);
}
};
data=newvector(){
@凌驾
public synchronized boolean addAll(CollectionI尝试了这一个,但它不能帮助我为什么?发生了什么事?@Sotirios Delimanolis,我的意思是它给了我一些重复的元素..我尝试了这个,但它不能帮助我为什么?发生了什么?@Sotirios Delimanolis,我的意思是它给了我一些重复的元素..public boolean equals(Object obj){return(this==obj);}
那么你的意思是我使用一个循环来比较ìf(Vector.contains(newitem)==true)Vector.add(newitem)`-public boolean equals(objet_poid_n obj){if((obj.Num==this.Num)&(obj.poid==this.poid))返回true;else返回(false)}
看看这里:从逻辑上讲,你所说的和你所提到的都是合乎逻辑的,应该可以删除重复项!我认为问题在后面的代码中。我将提到你的答案作为解决数据结构向量重复问题的正确答案,我将检查我的代码,也许错误不在那里:)public boolean equals(Object obj){return(this==obj);}
那么你的意思是我使用一个循环来比较ìf(Vector.contains(newitem)==true)Vector.add(newitem)`???public boolean equals(objet_poid_n obj){if((obj.Num==this.Num)&(obj.poid==this.poid))返回true;else返回(false)}
看看这里:从逻辑上讲,你所说的和你所提到的都是合乎逻辑的,应该可以删除重复项!我认为问题在后面的代码中。我会把你的答案作为正确答案提出来