Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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 检查ArrayList是否存在重复项_Java_Arraylist - Fatal编程技术网

Java 检查ArrayList是否存在重复项

Java 检查ArrayList是否存在重复项,java,arraylist,Java,Arraylist,Class: public class Variant { private String variant; private String quantity; //getters and setters } ArrayList: ArrayList<Variant> variantList = getVariantsList(); ArrayList variantList=GetVariantList(); 现在我想检查variantList是否包含重复

Class:

public class Variant
{
    private String variant;
    private String quantity;
    //getters and setters
}
ArrayList:

ArrayList<Variant> variantList = getVariantsList();
ArrayList variantList=GetVariantList();

现在我想检查
variantList
是否包含重复的
variant
条目?请注意,
variant
具有两个不同
数量的条目将被视为重复项。

您只需在
variant
类中验证equals方法,并提供该方法中的所有相等规则

 @Override
    public boolean equals(Object obj) {
      ..
然后,您可以使用contains方法,或者将其传递给一个
集合
,以消除所有重复项


如果希望
variant
有两个不同数量的条目也被视为dup,则可以在equals中添加该条件

您可以在
Variant
类中验证equals方法,并提供该方法中的所有相等规则

 @Override
    public boolean equals(Object obj) {
      ..
然后,您可以使用contains方法,或者将其传递给一个
集合
,以消除所有重复项

如果希望
variant
有两个不同数量的条目也被视为dup,则可以在equals中添加该条件

您可以使用
contains()

if(variantList.contains(****){
...
}
您可以使用
contains()

if(variantList.contains(****){
...
}

只需将一个对象与列表中的其他对象选中即可

在Variant类中重写equals方法

@Override
    public boolean equals(Object obj) {
        if (obj != null) {

            if (obj instanceof Variant) {
                Variant temp = (Variant) obj;
                return this.quantity.equals(temp.quantity); //for different quantity
            } else {
                return false;
            }
        }
        return false;
    }
然后检查:

   for (int i = 0; i < variantList.size(); i++) {
            for (int j = 0; j < variantList.size(); j++) {
                if (i != j) {
                    if (iList.get(i).equals(iList.get(j))) {
                        //logic when duplicate
                        break;
                    }
                }
            }
        }
for(int i=0;i
只需将一个对象与列表中的其他对象选中即可

在Variant类中重写equals方法

@Override
    public boolean equals(Object obj) {
        if (obj != null) {

            if (obj instanceof Variant) {
                Variant temp = (Variant) obj;
                return this.quantity.equals(temp.quantity); //for different quantity
            } else {
                return false;
            }
        }
        return false;
    }
然后检查:

   for (int i = 0; i < variantList.size(); i++) {
            for (int j = 0; j < variantList.size(); j++) {
                if (i != j) {
                    if (iList.get(i).equals(iList.get(j))) {
                        //logic when duplicate
                        break;
                    }
                }
            }
        }
for(int i=0;i
重写
等于(对象obj)
方法,并尝试比较对象的变量和数量

尝试循环遍历variantList,并使用
variantList.contains(variant)
覆盖
equals(Object obj)
方法检查重复性,并尝试比较变量和数量上的对象


尝试循环遍历variantList,并使用
variantList.contains(variant)
检查重复性。您只需在
variant
中重写equals方法,然后像这样尝试

 List<Varient> list =getVariantsList();
        System.out.println("here list size"+list.size());
        Set<Varient> set = new HashSet<Varient>(list);
        System.out.println("here"+set.size());
List List=getVariantsList();
System.out.println(“此处列表大小”+list.size());
Set Set=新哈希集(列表);
System.out.println(“此处”+set.size());

您可以简单地覆盖
变体中的equals方法,然后像这样尝试

 List<Varient> list =getVariantsList();
        System.out.println("here list size"+list.size());
        Set<Varient> set = new HashSet<Varient>(list);
        System.out.println("here"+set.size());
List List=getVariantsList();
System.out.println(“此处列表大小”+list.size());
Set Set=新哈希集(列表);
System.out.println(“此处”+set.size());

您需要做两件事:

  • 重写变量类中的
    equals()
    (下面的最小代码): 请注意,以下代码仅检查数量,而不检查变型道具。IDE还可以帮助您生成
    equals()

    @Override
    public boolean equals(Object object) {
       boolean isEqual = (this == object);
       if(object instanceof Variant){
            Variant variant = (Variant) object;
            isEqual = this.quantity.equals(variant.quantity);
       }else{
           isEqual = false;
       }
    
       return isEqual;
    }
    
  • 检查列表中是否包含对象-该对象将使用
    equals()
    检查两者是否相等

    for (Variant variant : variantList) {
       if (variantList.contains(variant)) {
          //do logic if its present
       }
    }
    

    • 您需要做两件事:

      • 重写变量类中的
        equals()
        (下面的最小代码): 请注意,以下代码仅检查数量,而不检查变型道具。IDE还可以帮助您生成
        equals()

        @Override
        public boolean equals(Object object) {
           boolean isEqual = (this == object);
           if(object instanceof Variant){
                Variant variant = (Variant) object;
                isEqual = this.quantity.equals(variant.quantity);
           }else{
               isEqual = false;
           }
        
           return isEqual;
        }
        
      • 检查列表中是否包含对象-该对象将使用
        equals()
        检查两者是否相等

        for (Variant variant : variantList) {
           if (variantList.contains(variant)) {
              //do logic if its present
           }
        }
        

      遵循以下准则:

    • 您的类
      Variant
      必须
      重写
      equals
      方法,因为您基于质量定义了一个复制条件,因此在
      equals
      方法中检查质量属性值,即

      public class Variant {
          private String variant;
          private String quantity;
      
      
      public Variant(String variant, String quantity) {
          this.variant = variant;
          this.quantity = quantity;
      }
      
      @Override
      public int hashCode() {
          final int prime = 31;
          int result = 1;
          result = prime * result
                  + ((quantity == null) ? 0 : quantity.hashCode());
          return result;
      }
      
      @Override
      public boolean equals(Object obj) {
          if (this == obj)
              return true;
          if (obj == null)
              return false;
          if (getClass() != obj.getClass())
              return false;
          Variant other = (Variant) obj;
          if (quantity == null) {
              if (other.quantity != null)
                  return false;
          } else if (!quantity.equals(other.quantity))
              return false;
          return true;
      }
      
      }
    • 创建一种基本上检查列表是否包含重复条目(变量)的方法,并相应地返回truefalse

    • 现在,测试功能

      publicstaticvoidmain(字符串[]args){
      变量1=新变量(“1”、“100”);
      变量2=新变量(“2”,“200”);
      变量3=新变量(“3”、“200”)

      ArrayList variantList=新的ArrayList(); variantList.add(variant1); variantList.add(variant2); variantList.add(variant3); System.out.println(Variant.isListContainesDuplicateEntries(variantList));
    • 输出:真


      遵循以下准则:

    • 您的类
      Variant
      必须
      重写
      equals
      方法,因为您基于质量定义了一个复制条件,因此在
      equals
      方法中检查质量属性值,即

      public class Variant {
          private String variant;
          private String quantity;
      
      
      public Variant(String variant, String quantity) {
          this.variant = variant;
          this.quantity = quantity;
      }
      
      @Override
      public int hashCode() {
          final int prime = 31;
          int result = 1;
          result = prime * result
                  + ((quantity == null) ? 0 : quantity.hashCode());
          return result;
      }
      
      @Override
      public boolean equals(Object obj) {
          if (this == obj)
              return true;
          if (obj == null)
              return false;
          if (getClass() != obj.getClass())
              return false;
          Variant other = (Variant) obj;
          if (quantity == null) {
              if (other.quantity != null)
                  return false;
          } else if (!quantity.equals(other.quantity))
              return false;
          return true;
      }
      
      }
    • 创建一种基本上检查列表是否包含重复条目(变量)的方法,并相应地返回truefalse

    • 现在,测试功能

      publicstaticvoidmain(字符串[]args){
      变量1=新变量(“1”、“100”);
      瓦里安