-4

我想扭转这个:

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 的顺序nameArray[i]?.. 甚至更好,因为我的 idArray 实际上是一个唯一 ID 的列表,我想根据 idArray 对 nameArray 进行排序。

4

3 回答 3

3

(更新:现在反转字符串数组而不是字符串列表。)

Collections.reverse与 with 一起使用来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]
}
于 2013-05-02T12:36:09.333 回答
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);
  }
}
于 2013-05-02T12:50:44.067 回答
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" 
于 2014-02-05T20:35:56.750 回答