Java对象按中文排序
需求如图所示:
代码实现:
1、通过java 8 stream流进行处理
前提:返回的对象为字符串数组。
/**
* 获取所有车间名称
*/
@Override
public List<String> getAllGridName() {
List<GridEntity> gridEntities = gridService.list();
if (CollectionUtils.isEmpty(gridEntities)) {
return null;
}
return gridEntities.stream().map(GridEntity::getGname).sorted(Collator.getInstance(Locale.CHINA))
.collect(Collectors.toList());
}
2、通过sort() 方法对对象进行排序
如果返回的数组为对象数组,则可以使用如下方式实现。
@Override
public List<DictEntity> getMaterialTypeList() {
List<TmpOrderAuxiliaryPlanEntity> list = this.list();
if (CollectionUtils.isEmpty(list)) {
return null;
}
List<Integer> materialTypeList = list.stream().map(TmpOrderAuxiliaryPlanEntity::getMaterialType).collect(Collectors.toList());
List<DictEntity> dictEntities = dictService.listByIds(materialTypeList);
// 首字母排序
dictEntities.sort((o1, o2) -> {
Comparator<Object> com = Collator.getInstance(Locale.CHINA);
return com.compare(o1.getName(), o2.getName());
});
return dictEntities;
}