如果list里面是一个对象呢
时间: 2023-11-25 17:06:36 浏览: 38
如果List中存储的是对象,我们可以使用Stream API的sorted()方法和Comparator来排序,然后再根据条件判断是否替换或插入。具体实现如下:
假设我们有一个Person类,包含name和age两个属性:
```java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// getter和setter方法省略
}
```
现在我们有两个List,aList和bList,分别存储Person对象:
```
List<Person> aList = Arrays.asList(
new Person("Tom", 20),
new Person("Jerry", 25),
new Person("Alice", 30)
);
List<Person> bList = Arrays.asList(
new Person("Bob", 21),
new Person("Jerry", 22),
new Person("David", 31)
);
```
我们可以使用如下代码将bList中的内容合并到aList中:
```java
boolean condition = true; // 某个条件
List<Person> result = bList.stream()
.filter(item -> condition && aList.stream()
.anyMatch(p -> p.getName().equals(item.getName()))) // 满足条件时将Alist的内容替换
.collect(Collectors.toList());
if (condition) {
aList.removeAll(result);
aList.addAll(bList);
} else {
aList.addAll(bList.stream()
.filter(item -> aList.stream()
.noneMatch(p -> p.getName().equals(item.getName())))
.sorted(Comparator.comparing(Person::getAge)) // 按照年龄升序排序
.collect(Collectors.toList()));
}
```
首先,我们根据条件和Alist中的内容,筛选出要被替换的内容,并将其添加到result列表中。然后,我们将Blist中满足条件的内容从Alist中删除,并将整个Blist插入Alist。如果不满足条件,我们只需要将Blist中不在Alist中的内容插入Alist,并按照年龄进行升序排序即可。注意,这里的排序是使用Comparator.comparing()方法和Person::getAge方法引用实现的。