我想扭转这一点:
customArray = myArray;
nameArray = new String[myArray.size()];
for (int i = 0; i < myArray.size(); i++) {
idArray[i] = myArray.get(i).getUnitID();
nameArray[i] = myArray.get(i).getUnitName();
}
if (sortType == SORT)
Arrays.sort(idArray, Collections.reverseOrder());
Arrays.sort(nameArray, ...);
我知道如何使用Arrays.sort(stringArray, Collections.reverseOrder());
而不是索引值来解决这个问题。
如何基于它的nameArray[i]
来反转我的nameArray的顺序?甚至更好,因为我的idArray实际上是一个唯一ID的列表,我想根据idArray对nameArray进行排序。
答案 0 :(得分:2)
(更新:现在正在反转字符串数组而不是字符串列表。)
将Collections.reverse
与Arrays.asList
一起使用以反转数组。
示例:强>
public static void main(String... args) {
String[] array = {"one", "two", "three"};
Collections.reverse(Arrays.asList(array)); // reverses the underlying list
System.out.println(Arrays.toString(array)); // prints [three, two, one]
}
答案 1 :(得分:1)
解决问题的唯一方法是使用OOP方法。毕竟,Java是一种OOP语言。所以没有两个数组:
int[] unitID
String[] unitName
你不能以索引保持对应的方式排序,写一个实现Unit
的类Comparable<Unit>
并使用一个数组:
Unit[] units
然后
Arrays.sort(units);
将完成这项工作。
您需要自己的课程:
public class Unit implements Comparable<Unit> {
private int id;
private String name;
// Constructor
// Methods
@Override
public int compareTo(Unit other) {
// sorts by id
return this.id - other.id;
// to sort by name, use this:
// return this.name.compareTo(other.name);
}
}
答案 2 :(得分:0)
试试这个:
import java.util.Collections;
import java.util.List;
import java.util.Arrays;
public void reverseString(String[] stringArray){
List<String> list = Arrays.asList(stringArray);
Collections.reverse(list);
stringArray= (String[]) list.toArray();
}
String[] yourStringArray = new String[]{"Sunday", "Monday", "Tuesday", "Wednesday"};
reverseString(yourStringArray);
//result would be:
//"Wednesday","Tuesday", "Monday", "Sunday"