java 里面有对象通过循环一个list减去一个list的值
时间: 2024-02-28 15:57:08 浏览: 67
在 Java 中,如果要对一个对象的 List 进行减法操作,需要重写对象的 `equals` 方法和 `hashCode` 方法,以便正确比较两个对象是否相等。具体来说,可以通过以下代码实现:
```java
class Obj {
private int value;
public Obj(int value) {
this.value = value;
}
public int getValue() {
return value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Obj obj = (Obj) o;
return value == obj.value;
}
@Override
public int hashCode() {
return Objects.hash(value);
}
}
public class Main {
public static void main(String[] args) {
List<Obj> list1 = new ArrayList<>(Arrays.asList(new Obj(1), new Obj(2), new Obj(3), new Obj(4), new Obj(5)));
List<Obj> list2 = new ArrayList<>(Arrays.asList(new Obj(3), new Obj(4), new Obj(5)));
for (Obj obj : list2) {
list1.remove(obj);
}
System.out.println(list1);
}
}
```
在上述代码中,我们定义了一个 `Obj` 类来表示需要进行减法操作的对象,其中包含一个整数值 `value`。然后我们重写了 `equals` 方法和 `hashCode` 方法,使得两个对象相等当且仅当它们的 `value` 值相等。接着我们定义了两个 List `list1` 和 `list2`,分别表示被减数和减数。然后我们使用 `for` 循环遍历 `list2` 中的元素,依次从 `list1` 中移除对应的元素。最终输出结果为 `[Obj@1, Obj@2]`,即 `list1` 减去 `list2` 的结果,其中 `Obj@1` 和 `Obj@2` 分别表示 `Obj(1)` 和 `Obj(2)` 这两个对象的地址。需要注意的是,这里我们使用了 `ArrayList` 来表示 List,因为它提供了方便的删除操作。如果需要保留原来的 List,可以使用 `new ArrayList<>(list1)` 和 `new ArrayList<>(list2)` 来创建一个新的 List。
阅读全文