Java中List中存储对象将对象中name字段为空的对象放在集合的前列
时间: 2023-06-14 09:08:28 浏览: 219
JSON 与对象、集合之间的转换的示例
可以通过自定义比较器来实现将name字段为空的对象放在集合的前列。以下是示例代码:
假设有一个Person类,包含name字段和age字段:
```
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
现在有一个List<Person>,我们希望将name字段为空的Person对象放在集合的前列,可以定义一个比较器:
```
public class PersonComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
if (p1.getName() == null && p2.getName() == null) {
return 0;
} else if (p1.getName() == null) {
return -1;
} else if (p2.getName() == null) {
return 1;
} else {
return p1.getName().compareTo(p2.getName());
}
}
}
```
在比较器中,如果两个Person对象的name字段都为空,则认为它们相等;如果只有一个Person对象的name字段为空,则认为它更小;如果两个Person对象的name字段都不为空,则按照name字段的字典序进行比较。
接下来我们可以使用Collections.sort()方法来对List进行排序:
```
List<Person> list = new ArrayList<>();
list.add(new Person("Alice", 20));
list.add(new Person(null, 25));
list.add(new Person("Bob", 30));
list.add(new Person(null, 35));
Collections.sort(list, new PersonComparator());
```
排序后,list中的元素顺序为:两个name字段为空的Person对象,然后是两个name字段非空的Person对象,按照name字段的字典序排序。
阅读全文