日常开发中我们通常会遇到将一个List按照特定的规则排序,例如我们需要将一个List按照 “广州市”, “深圳市”, “珠海市”, “汕头市” 的顺序排序,我们可以使用下述方式实现。
- City实体类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class City {
private String name;
private String age;
}
- 排序方法
public static void sortCitys(List<City> cities) {
Collections.sort(cities, (o1, o2) -> {
String name1 = o1.getName();
String name2 = o2.getName();
List<String> predefinedOrder = Arrays.asList( "广州市", "深圳市", "珠海市", "汕头市");
return Integer.compare(
predefinedOrder.indexOf(name1),
predefinedOrder.indexOf(name2)
);
});
}
- main测试
public static void main(String[] args) {
List<City> cities = new ArrayList<>();
City c1 = new City("深圳市", "10");
City c2 = new City("广州市", "11");
cities.add(c1);
cities.add(c2);
System.out.println("排序前:"+cities);
sortCitys(cities);
System.out.println("排序后:"+cities);
}
- 效果