所以我知道如何对 ints
或 floats
(或其他数据类型)的 Java 数组进行排序。但是,如果它是一个字符串数组 String[] arr = {}
,其中数组包含 2x^2
、4x^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/