分析:题目中根据关键字查询国家列表,可以确认用 Map 存储,key 为关键字,value 为国家列表。因此需要创建国家类,包含关键字成员变量作为 Map 中的 key,并且国家按照拼音排序,因此国家类中还需要拼音作为成员变量,由于界面中需要展示国家名称,因此还需要国家名称作为国家类中的成员变量。
创建国家类,成员变量包括关键字、拼音、国家名称。国家类定义如下:
@Data
@Accessors(chain = true)
public class Country {
/**
* 键,如:热门国际及地区、ABCDEF
*/
private String key;
/**
* 拼音,排序使用
*/
private String pinyin;
/**
* 名称
*/
private String name;
}
然后将国家转换为 Map。
public class App {
public static void main(String[] args) {
// 1. 查询出国家列表
List<Country> list = Arrays.asList(new Country().setPinyin("ABCDEF").setPinyin("aerbaniya").setName("阿尔巴尼亚"));
// key 为筛选条件,如:热门国家及地区、ABCDEF,value 为按照拼音排序后的国家列表
Map<String, List<Country>> map = list.stream()
// 2. 按照拼音排序
.sorted(Comparator.comparing(Country::getPinyin))
// 3. 根据 key 分组
.collect(Collectors.groupingBy(Country::getKey));
}
}