当前位置: 首页 > 面试题库 >

如何使用Arrays.sort()按长度对字符串数组进行排序

司空高义
2023-03-14
问题内容

我正在尝试使用来根据字符串的长度对字符串数组进行排序Arrays.sort(),但这会按字典顺序而不是按长度对字符串进行排序。这是我的代码:

S = "No one could disentangle correctly"
String W[] = S.split(" ");
Arrays.sort(W);

排序后:

correctly
could
disentangle
no
one

但是我想要的是

no  //length = 2
one //length = 3
could //length = 4 and likewise
correctly
disentangle

如何获得上述输出?请给出JDK 1.7和JDK1.8的答案。


问题答案:

如果您使用的是 JDK 1.8或更高版本,则可以使用 lambda表达式(matt 答案)。但是,如果您使用的是 JDK
1.7或更早版本,请尝试编写一个 自定义Comparator, 如下所示:

String S = "No one could disentangle correctly";
String W[] = S.split(" ");
Arrays.sort(W, new java.util.Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        // TODO: Argument validation (nullity, length)
        return s1.length() - s2.length();// comparision
    }
});


 类似资料:
  • 问题内容: 我想按长度顺序排列一个ArrayList字符串,而不仅仅是数字顺序。 例如,该列表包含以下单词: 需要根据它们的长度差异将它们排序为特殊字符串,例如: 因此最终列表如下所示(方括号中的差异): 问题答案: 使用自定义比较器: 然后使用对列表进行排序。

  • 问题内容: 我有一个包含多个数组的数组,我想根据这些数组中的某个字符串对数组进行排序。 如何按名称排序,以便 阿尔伯特排 在首位, 齐默尔曼排 在最后? 我知道如果可以使用整数进行排序,但是字符串使我毫无头绪,该怎么办。 谢谢您帮忙!:) 问题答案: 这可以通过将支持函数作为参数传递给方法调用来实现。 像这样:

  • 问题内容: 是否可以使用排序数组,然后再将另一个相关数组定位为与排序数组相同,例如: 从这一点出发,我想对数组进行排序,这样,如果“人”有一个cellNo“ x”,则在对数组进行排序后,他将具有相同的“ cellNo”“ x” 问题答案: 我会采用另一种方法: 创建一个新对象: 创建一个比较器: 打电话一对阵列

  • 问题内容: 尝试根据元素字符串长度对数组进行排序时,我被编译错误震惊。我有一套开始, 我理想地想排序 所以我有一个比较器类型 然后我打电话给全班 但随后,它引发了两个编译错误: 任何解决问题的线索,我将不胜感激。 问题答案: 您需要指定一个类型参数,以使实现生效。 在Java 1.7和更高版本中,您还可以将此方法的主体简化为: 另外,对对象进行排序。由于要对数组进行排序,因此应使用:

  • 问题内容: 我有这样的txt文件中的数据列表 我的任务是按照每个标准对这些数据进行排序,例如)按日期,纬度和经度排序 我尝试像这样的泡沫排序 这可行,但是需要太多时间 那里有在txt文件数据 有没有其他方法可以对这些数据进行排序? 问题答案: 我可能会破坏一些学生的家庭作业,但是这里… 正如课题所建议的那样,Java的自然方法是创建一个表示您的数据的类。然后实现一个将传递给实用方法的方法。 在运行

  • 问题内容: 我正在通过NEST c#使用ElasticSearch。我有很多关于人的信息 我希望能够按lastName以及长度的顺序对项目列表进行过滤和排序,因此名称中只有5个字符的人会出现在结果集的开头,然后是10个字符的人。 所以我想用一些伪代码做类似的事情 我是ElasticSearch的新手,所以任何示例都将非常有帮助。 问题答案: 您可以使用基于脚本的排序进行排序。 作为一个玩具示例,我