首页 > 解决方案 > 如何根据卡片类型重新排列arraylist中的对象

问题描述

我有一个场景,我必须以特定顺序重新排列银行名称的元素。此列表可以按任何顺序排列 [Wellsfargo、Bank of America、Chase、Citi、American Express],并且列表中可能没有一家或多家银行。我试图想出逻辑来重新排列这个顺序。[大通、花旗、美国银行、富国银行、美国运通]

任何帮助是极大的赞赏

标签: javaarraysspring-bootsorting

解决方案


正如评论中所注意到的,您可以sort使用自定义Comparator比较元素的indexOfaList与所需的顺序:

private static final List<String> ORDER_LIST = List.of("Chase", "Citi", "Bank Of America", "Wellsfargo", "American Express");

public static List<String> sort(String... names) {
    return Stream.of(names)
            .sorted(Comparator.comparingInt(ORDER_LIST::indexOf))
            .collect(Collectors.toList());
}

然后你可以这样做:

List<String> names = sort("American Express", "Citi", "Chase");
    
System.out.println(names);

输出:

[Chase, Citi, American Express]

推荐阅读