java - 根据任意索引对数组进行排序

标签 java arrays sorting

所以我知道如何对 intsfloats(或其他数据类型)的 Java 数组进行排序。但是,如果它是一个字符串数组 String[] arr = {},其中数组包含 2x^24x^4 等元素会怎样。如您所见,有几个索引具有整数,可以对其进行排序。

我认为对此进行排序的方法是在索引处拼接数字。对这些数字进行排序,然后将每个旧索引映射到新索引。

我觉得有更好的方法。

本质问题:是否存在一种排序方法,可以根据每个索引的某个索引处的整数对字符串数组进行排序?

如果您想知道,这里有一些算法的示例输入和输出。

Array: {"2x^3","2x^0","1x^1"}
Output:{"2x^3","1x^1","2x^0"} // Sorted based on last index

最佳答案

static final Comparator<String> myComparator = 
    new Comparator<String>() {
        public int compare(String s1, String s2)
        {
            // split s1 and s2, compare what you need
            // and return the result.
            // e.g.
            // char digit1 = s1[s1.length() - 1];
            // char digit2 = s2[s2.length() - 1];
            // return (int)(digit1 - digit2);
        }
     };

Collections.sort(list, myComparator);
// or
Arrays.sort(array, myComparator);

所以你让别人的排序方法为你做排序,你只需要提供一个方法来说明如何比较项目。您需要遵守一些规则和规定(例如,如果 A < B,B < C,则 A 必须 < C)。

您也可以内联/匿名进行:

Collections.sort(list, new Comparator<String>() {
    public int compare(String s1, String s2) {
        ...
    }
 });

关于java - 根据任意索引对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34326627/

相关文章:

algorithm - 为什么不总是使用堆排序

JavaScript 根据名称对 DOM 元素进行排序

bash - 如何将文件中的行从最短到最长排序?

java - 在 JavaFX TextArea 中突出显示字符串

java - GAE - 使用枚举字段和 'contains' 运算符过滤数据时 JDO 查询失败

java - 从浏览器运行端点会出现 503-服务不可用

c++ - 使用 vector 在 C++ 中声明 3D 数组结构

java - 为什么我不应该在实现它们时更改接口(interface)方法名称?

javascript - for循环javascript中的异步数据获取

Java:如何将 HashMap<String, Object> 转换为数组