利用到的方法:
- stream流中的sort、compare
- Collator.getInstance
Collator 类执行区分语言环境的 String 比较,可以使用静态工厂方法 getInstance 来为给定的语言环境获得适当的Collator 对象。如Collator.getInstance(Local.CHINESE)
是获得中国语言的Collator对象。 - findFirst()
- Collections.swap
整合代码:
// 按中文字典顺序排序
countryResList.sort(
(CountryRes c1, CountryRes c2) ->
Collator.getInstance(Locale.CHINESE).compare(c1.getCountryName(), c2.getCountryName()));
List<String> countryNameList =
countryResList.stream().map(CountryRes::getCountryName).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(countryNameList) && countryNameList.contains("中国")) {
// 或者下文交换元素时,判断index是否是-1,不进行判断的话,会越界
// 或者通过for循环,遍历,有对应元素的话再进行交换
List<CountryRes> finalCountryResList = countryResList;
int index =
IntStream.range(0, countryResList.size())
.filter(i -> "中国".equals(finalCountryResList.get(i).getCountryName()))
.findFirst()
.orElse(-1);
Collections.swap(countryResList, 0, index);
}