Java:以数字方式对字符串数组进行排序

标签 java arrays string sorting

我有一个包含以下条目的字符串数组:

Array[0] = "70% Marc"
Array[1] = "50% Marc"
Array[2] = "100% Marc"
Array[3] = "20% Marc"

我想对这个数组进行降序排序。 当我使用 Arrays.sort(Array) 时,它会按降序排序,但 100% Marc 位于底部(因为它只查看第一个字符进行排序).我希望它像这样排序:

"100% Marc"
"70% Marc"
"50% Marc"
"20% Marc"

我该怎么做?

最佳答案

编写您自己的 CustomStringComparator 并将其与排序方法一起使用。

public class CustomStringComparator implements Comparator<String>{

    @Override
    public int compare(String str1, String str2) {

       // extract numeric portion out of the string and convert them to int
       // and compare them, roughly something like this

       int num1 = Integer.parseInt(str1.substring(0, str1.indexOf("%") - 1));
       int num2 = Integer.parseInt(str2.substring(0, str2.indexOf("%") - 1));

       return num1 - num2;

    }
}

关于Java:以数字方式对字符串数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7348223/

相关文章:

c# - 多次获取数组的索引,然后将它们存储在数组中

javascript - 记录时 Array.push 未正确排序

Java String.indexOf 和空字符串

Java:将 "string expression"转换为实际的字符串

c++ - 了解此打印结果

Java - JRadioButton 名称的 Action 监听器

java - 关于 OCA 考试垃圾收集的问题

java - 如何在条目顺序不断变化时比较两个 JSON 字符串

java - 使用spring检查旧对象和新对象的变化

JavaScript 执行函数数组,如果全部返回 True,则返回 True