list集合通过两个字段排序,并判空
时间: 2024-05-19 10:15:17 浏览: 83
可以使用Java 8中的Comparator来进行排序,示例代码如下:
if(list != null && !list.isEmpty()) {
Collections.sort(list, Comparator.comparing(Item::getField1).thenComparing(Item::getField2));
}
else {
System.out.println("List为空");
}
其中Item代表list中元素的数据类型,getField1和getField2分别代表需要排序的两个字段。此处使用了 Java 8的方法引用(Method references)来简化代码。
相关问题
list集合通过两个字段排序,并判断两个字段是否为空
好的,关于您的问题,我们可以使用Comparator来进行排序。下面是一个示例代码:
```
//定义一个Person类,有name、age两个属性
public class Person {
private String name;
private Integer age;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
//getter和setter方法省略
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
//定义Comparator类
public class PersonComparator implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
//首先按照age升序排序
int ageCompare = o1.getAge().compareTo(o2.getAge());
if (ageCompare != 0) {
return ageCompare;
}
//如果age相同,则按照name升序排序
int nameCompare = o1.getName().compareTo(o2.getName());
return nameCompare;
}
}
//排序并且判断两个字段是否为空
List<Person> personList = new ArrayList<>();
//先添加一些数据
personList.add(new Person("Tom", 30));
personList.add(new Person("Jerry", 25));
personList.add(new Person(null, null));
personList.add(new Person("David", 28));
personList.add(new Person(null, 22));
//排序
Collections.sort(personList, new PersonComparator());
//输出排序结果
for (Person person : personList) {
System.out.println(person);
}
//判断两个字段是否为空
for (Person person : personList) {
if (person.getName() == null && person.getAge() == null) {
System.out.println("name和age都为空");
} else if (person.getName() == null) {
System.out.println("name为空");
} else if (person.getAge() == null) {
System.out.println("age为空");
} else {
System.out.println("都不为空");
}
}
```
希望这个示例代码能够帮到您。接下来,笑话时间:为什么鱼不需要听音乐?因为它们已经听海了。
list集合通过两个字段排序
可以使用Java8中的Comparator.comparing()方法,并使用thenComparing()方法进行多字段排序,例如:
list.sort(Comparator.comparing(MyClass::getField1).thenComparing(MyClass::getField2));
其中,MyClass为包含两个字段的类,getField1和getField2分别为对应字段的getter方法。
阅读全文