如何根据它的索引值反转String数组

时间:2013-05-02 12:33:48

标签: java arrays

我想扭转这一点:

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进行排序。

3 个答案:

答案 0 :(得分:2)

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

Collections.reverseArrays.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"