List中存储对象将对象中name字段为空的对象放在集合的前列
时间: 2023-06-14 08:08:33 浏览: 98
可以通过自定义比较器来实现将name字段为空的对象放在集合的前列。具体步骤如下:
1. 定义一个类,实现Comparator接口,重写compare方法。
2. 在compare方法中,判断两个对象的name字段是否为空,如果一个为空一个不为空,则将空的对象排在前面;如果两个都为空或都不为空,则按照默认的排序方式进行排序。
3. 使用Collections.sort方法,并将自定义的比较器作为参数传入,即可实现将name字段为空的对象放在集合的前列。
以下是示例代码:
```java
import java.util.Comparator;
import java.util.List;
import java.util.Collections;
public class ObjectSorter {
public static void sort(List<MyObject> list) {
Collections.sort(list, new MyComparator());
}
private static class MyComparator implements Comparator<MyObject> {
@Override
public int compare(MyObject o1, MyObject o2) {
if (o1.getName() == null && o2.getName() != null) {
return -1;
} else if (o1.getName() != null && o2.getName() == null) {
return 1;
} else {
return 0;
}
}
}
}
class MyObject {
private String name;
public MyObject(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
```
使用示例:
```java
List<MyObject> list = new ArrayList<>();
list.add(new MyObject(null));
list.add(new MyObject("b"));
list.add(new MyObject("a"));
list.add(new MyObject(null));
ObjectSorter.sort(list);
for (MyObject obj : list) {
System.out.println(obj.getName());
}
```
输出结果:
```
null
null
b
a
```
阅读全文