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;
}
}
- 创建一种基本上检查列表是否包含重复条目(变量)的方法,并相应地返回true和false:
- 现在,测试功能:
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;
}
}
- 创建一种基本上检查列表是否包含重复条目(变量)的方法,并相应地返回true和false:
- 现在,测试功能:
publicstaticvoidmain(字符串[]args){
变量1=新变量(“1”、“100”);
瓦里安