Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中对大小写进行排序_Java - Fatal编程技术网

在Java中对大小写进行排序

在Java中对大小写进行排序,java,Java,您好,我正在创建一个方法,该方法按字母顺序对数组中的元素进行排序,但它们是基于ascii进行排序的。我需要对它们进行排序,首先显示大写字母,然后显示小写字母。例如,如果我有{Apple,Orange,Car,art,olive},那么排序应该是Apple,art,Car,Orange,olive public static ArrayList<String> sort(ArrayList<String> lines) { lines.sort(String

您好,我正在创建一个方法,该方法按字母顺序对数组中的元素进行排序,但它们是基于ascii进行排序的。我需要对它们进行排序,首先显示大写字母,然后显示小写字母。例如,如果我有{Apple,Orange,Car,art,olive},那么排序应该是Apple,art,Car,Orange,olive

public static ArrayList<String> sort(ArrayList<String> lines) {
        lines.sort(String::compareToIgnoreCase);
        return lines;
    }


公共静态ArrayList排序(ArrayList行){
line.sort(字符串::compareTignoreCase);
回流线;
}

这就是我现在拥有的代码,我知道我必须删除compareToIgnoreCase,但是我应该如何做呢?

您需要编写自己的比较器(请参阅java.util.Comparator)


然后检查第一个字符是否相同(使用toUpperCase或toLowerCase)。如果是相同的,大写字母获胜。如果没有,您可以定期返回排序值。

使用
Comparator.comparating()
首先以不区分大小写的方式比较单词的第一个字母,然后在下一步中使用自然顺序,即先大写后小写

List<String> list = Arrays.asList("Apple","Orange","Car","art","olive");
list.sort(Comparator.<String, Character>comparing(s -> Character.toUpperCase(s.charAt(0)))
                .thenComparing(s -> s));
System.out.println(list); // [Apple, art, Car, Orange, olive]
List List=Arrays.asList(“苹果”、“橙色”、“汽车”、“艺术”、“橄榄”);
list.sort(Comparator.comparing(s->Character.toUpperCase(s.charAt(0)))
.然后比较(s->s));
System.out.println(列表);//[苹果、艺术品、汽车、橘子、橄榄]

只需将其更改为比较您的“Apple、art、Car、Orange、olive”示例不符合您声明的要求,即它们必须是大写,然后是小写(这就是“基于ASCII排序”的结果)@Stultuske它会先排序所有大写字母,然后再排序所有小写字母。但我要大写字母A,然后小写字母A,然后大写字母B等。那么你确实需要编写自己的比较器。如果你阅读OP的问题,这不是他们想要的逻辑。