日常开发中我们通常会遇到将一个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);}
- 效果