【发布时间】:2025-12-27 14:05:15
【问题描述】:
String[] planets = new String[] { "Mercury", "Venus", "Earth", "Mars",
"Jupiter", "Saturn", "Uranus", "Neptune" };
我有一个简单的行星名称数组,我想反转添加到数组中的每个名称(不是字符串顺序)。
我继续与 lambda 语法作斗争:
Arrays.sort(planets, (first, second) -> new StringBuilder(first).reverse().toString());
System.out.println(Arrays.toString(planets));
目前我得到:
这一行有多个标记
StringBuilder类型中的方法reverse()不适用于参数(String)- 类型不匹配:无法从
String转换为int
回复:
谢谢大家的建议... asList 让我很接近。我仍然没有正确排序。
所以我需要找到一种方法让 array.sort 工作,因为这是分配(接受 array.sort 和 lambda 它)。
我已经 ping 导师要求澄清,但我的时间不多了。
这是我尝试保留 array.sort 的工作
// lambda expression , long to short
System.out.println("5) Sorted by length (descending):");
Arrays.sort(planets, (first, second) -> second.length() - first.length());
System.out.println(Arrays.toString(planets));
// lambda expression , reverse the name , then sort in ascending order
// hint use new StringBuilder(first).reverse().toString() to reverse the string
System.out.println("6) Sorted in dictionary order of the reversed name (ascending)");
Arrays.sort(planets, (first, second) -> new StringBuilder(first).reverse().toString().compareTo(second));
System.out.println(Arrays.toString(planets));
// lambda expression , reverse the name , then sort in descending order
System.out.println("7) Sorted in dictionary order of the reversed name (descending)");
Arrays.sort(planets, (first, second) -> new StringBuilder(second).reverse().toString().compareTo(first));
System.out.println(Arrays.toString(planets));
我一生无法弄清楚的是,所有 3 个表达式都得到完全相同的结果......每个表达式都给了我从最长到最短排序的原始数组。
这是我的结果:
5) 按长度排序(降序): [海王星、水星、木星、天王星、土星、金星、地球、火星]
6) 按倒序名的字典顺序排序(升序) [海王星、水星、木星、天王星、土星、金星、地球、火星]
7) 按倒序名的字典顺序排序(降序) [海王星、水星、木星、天王星、土星、金星、地球、火星]
【问题讨论】:
-
你为什么打电话给
Arrays.sort()? -
我正在使用 Arrays.sort() 因为我被要求做家庭作业。