Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除数据结构向量中的重复项_Java_Data Structures_Vector_Duplicates - Fatal编程技术网

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)}
    看看这里:从逻辑上讲,你所说的和你所提到的都是合乎逻辑的,应该可以删除重复项!我认为问题在后面的代码中。我会把你的答案作为正确答案提出来