2016-02-11 7 views
0

Я хочу отсортировать массив, проблема в том, что каждый элемент массива имеет определенные значения в другом массиве, например first array = {31,12,88,74, 55} Второй массив = {5,2,3,3,5} При сортировке вторых элементов массива в порядке убывания соответствующие значения в первом массиве должны быть взаимозаменяемы. Первый массив = {31,55,74,88,12} Второй массив = {5,5,3,3,2}Сортировка массива на основе значений другого массива

+1

Почему бы не использовать HashMap? Вы можете сохранить элементы первого массива в качестве ключей и значений второго массива в качестве значений. Сортировка будет поддерживать ассоциативность второго – Sachin

ответ

3

Похоже, что вам не нужно хранить массив объектов, где каждый объект имеет два значения ,

public class X implements Comparable<X> { 
    private int a; 
    private int b; 

    public X(int a, int b) { 
     this.a = a; 
     this.b = b; 
    } 

    public int compareTo(X other) { 
     return a - other.a; 
    } 
} 

Тогда вы можете составить список этих товаров и отсортировать их.

List<X> items = ... // Fill in the blanks 
Collections.sort(items); 
1

Вы можете просто написать два для петель, чтобы отсортировать второй массив, и сделать те же изменения в первом массиве одновременно.

for (int i = 0; i < array2.length; i++){ 
    for (int j = 0; j < array2.length; j++){ 
     if (array2[i] < array2[j] && i < j){ 
      int temp1 = array1[i]; 
      int temp2 = array2[i]; 

      array1[i] = array1[j]; 
      array2[i] = array2[j]; 

      array1[j] = temp1; 
      array2[j] = temp2; 
     } 
    } 
} 

Хотя второй массив сортируется, элементы первого массива перемещаются точно так же, независимо от их значений.

Надеюсь, это поможет!

Смежные вопросы