Java弟弟 作业题属实给我整不会了

img

分析:题目中根据关键字查询国家列表,可以确认用 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));
    }
    
}