从列表和比较器java中删除
我必须从列表中删除元素 但只需比较它的ID(类中的变量) 所以我在班上实施了可比性 但它并没有移除从列表和比较器java中删除,java,arraylist,Java,Arraylist,我必须从列表中删除元素 但只需比较它的ID(类中的变量) 所以我在班上实施了可比性 但它并没有移除 class data implements Comparable<data>{ int id; int data; data(int i,int d) { id=i; data=d; } @Override public int compareTo(data o) { if(id==o.id) return 0;
class data implements Comparable<data>{
int id;
int data;
data(int i,int d) {
id=i;
data=d;
}
@Override
public int compareTo(data o) {
if(id==o.id)
return 0;
return -1;
}
}
public class trial {
public static void main(String[] args) {
List<data> newone = new ArrayList<>();
data o1= new data(1,2);
data o2= new data(1,3);
System.out.println("Added");
newone.add(o1);
System.out.println(o1.id);
System.out.println(o2.id);
if(newone.contains(o2)) {
newone.remove(o2);
System.out.println("found");
}
if(newone.isEmpty())
System.out.println("Deleted");
System.out.println("finsihed");
}
类数据实现可比较{
int-id;
int数据;
数据(整数i,整数d){
id=i;
数据=d;
}
@凌驾
公共整数比较(数据o){
if(id==o.id)
返回0;
返回-1;
}
}
公开庭审{
公共静态void main(字符串[]args){
List newone=newarraylist();
数据o1=新数据(1,2);
数据o2=新数据(1,3);
系统输出打印项次(“添加”);
添加(o1);
System.out.println(o1.id);
系统输出打印项次(o2.id);
if(新一代含(o2)){
去除(o2);
System.out.println(“找到”);
}
if(newone.isEmpty())
系统输出打印项次(“删除”);
System.out.println(“finsihed”);
}
使用迭代器
类迭代列表,然后使用删除方法删除元素,否则您可能会遇到一些问题“并发修改异常”
另外
包含数组列表的方法使用列表元素的equals
方法,因此您需要在类数据中实现equals方法使用迭代器类迭代列表,然后使用删除方法删除元素,否则您可能会遇到问题一些问题是“并发修改异常”
另外包含数组列表的方法使用列表元素的equals
方法,因此您需要在类数据中实现equals方法,您需要覆盖equals方法
public boolean equals(Object obj) {
return id==obj.id;
}
您需要重写equals方法
public boolean equals(Object obj) {
return id==obj.id;
}
谢谢大家@Override public boolean equals(Object obj){if(obj instanceof data){data input=(data)obj;if(id==input.id)return true;}return false;}谢谢大家@Override public boolean equals(Object obj){if(obj instanceof data){data input=(data)obj;if(id==input.id)返回true;}返回false;}