java 两个数组对象指定多属性值比较取出不交集的数组
时间: 2023-09-19 11:10:49 浏览: 101
详解JS取出两个数组中的不同或相同元素
可以使用Java 8的Stream API来实现两个数组对象指定多属性值比较取出不交集的数组。具体实现步骤如下:
1. 定义一个类,该类包含多个属性,例如:
```java
public class MyObject {
private int id;
private String name;
// 其他属性...
// getter 和 setter 方法...
}
```
2. 定义两个数组对象:
```java
MyObject[] array1 = {new MyObject(1, "A"), new MyObject(2, "B"), new MyObject(3, "C")};
MyObject[] array2 = {new MyObject(1, "A"), new MyObject(4, "D"), new MyObject(5, "E")};
```
3. 使用Stream API筛选出不交集的数组:
```java
MyObject[] result = Arrays.stream(array1)
.filter(obj1 -> Arrays.stream(array2)
.noneMatch(obj2 -> obj1.getId() == obj2.getId() && obj1.getName().equals(obj2.getName())))
.toArray(MyObject[]::new);
```
这段代码的意思是,先遍历第一个数组,对于每一个元素,都在第二个数组中查找是否存在与之相同的元素,如果不存在,则将该元素加入结果数组中。最后将结果数组返回。
注意,上面的代码中使用了类的多个属性值来比较两个对象是否相同。如果只需要比较一个属性,可以将筛选条件改为:
```java
MyObject[] result = Arrays.stream(array1)
.filter(obj1 -> Arrays.stream(array2)
.noneMatch(obj2 -> obj1.getId() == obj2.getId()))
.toArray(MyObject[]::new);
```
阅读全文