Убывание Вида Массива Java?

Что-то вроде этого может быть тем, что вам нужно?

let cash = 0;
let card = 0;
let account = 0;

for (const row of result.rows) {
  switch (row.doc.paymentOption) {
    case 'cash':
      cash += row.doc.amount;
      break;
    case 'card':
      card += row.doc.amount;
      break;
    case 'account':
      account += row.doc.amount;
      break;
    default:
      // Error
  }
}

console.log(`Cash: ${cash}`);
console.log(`Card: ${card}`);
console.log(`Account: ${account}`);

Предполагается, что поле row.doc.amount всегда содержит действительное числовое значение.

252
задан I Like to Code 25 December 2013 в 17:01
поделиться

6 ответов

Вы можете использовать его для сортировки всех видов объектов

sort(T[] a, Comparator<? super T> c) 

Arrays.sort(a, Collections.reverseOrder());

Arrays.sort () не может использоваться напрямую для сортировки примитивных массивов в порядке убывания. Если вы попытаетесь вызвать метод Arrays.sort () , передав обратный Comparator, определенный в Collection.reverseOrder () , он выдаст ошибку

не найдено подходящего метода для сортировки (int [], компаратор)

Это будет нормально работать с массивом Integer, но не будет работать с массивом int.

Единственный способ отсортировать примитивный массив в порядке убывания: сначала отсортируйте массив в порядке возрастания, а затем переверните массив на место. Это также верно для двумерных примитивных массивов.

302
ответ дан 23 November 2019 в 02:51
поделиться

Существует большая путаница, продолжающаяся здесь - люди предлагают решения для непримитивных значений, пытаются реализовать некоторые алгоритмы сортировки от земли, дать решения, вовлекающие дополнительные библиотеки, представляя некоторые hacky и т.д. Ответ на исходный вопрос является 50/50. Для тех, кто просто хочет скопировать/вставить:

// our initial int[] array containing primitives
int[] arrOfPrimitives = new int[]{1,2,3,4,5,6};

// we have to convert it into array of Objects, using java's boxing
Integer[] arrOfObjects = new Integer[arrOfPrimitives.length];
for (int i = 0; i < arrOfPrimitives.length; i++) 
    arrOfObjects[i] = new Integer(arrOfPrimitives[i]);

// now when we have an array of Objects we can use that nice built-in method
Arrays.sort(arrOfObjects, Collections.reverseOrder());

arrOfObjects {6,5,4,3,2,1} теперь. Если у Вас есть массив чего-то другого, чем ints - используют соответствие объект вместо Integer.

0
ответ дан 23 November 2019 в 02:51
поделиться

Для обсуждений выше, вот легкий пример для сортировки примитивных массивов в порядке убывания.

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] nums = { 5, 4, 1, 2, 9, 7, 3, 8, 6, 0 };
        Arrays.sort(nums);

        // reverse the array, just like dumping the array!
        // swap(1st, 1st-last) <= 1st: 0, 1st-last: nums.length - 1
        // swap(2nd, 2nd-last) <= 2nd: i++,  2nd-last: j--
        // swap(3rd, 3rd-last) <= 3rd: i++,  3rd-last: j--
        //
        for (int i = 0, j = nums.length - 1, tmp; i < j; i++, j--) {
            tmp = nums[i];
            nums[i] = nums[j];
            nums[j] = tmp;
        }

        // dump the array (for Java 4/5/6/7/8/9)
        for (int i = 0; i < nums.length; i++) {
            System.out.println("nums[" + i + "] = " + nums[i]);
        }
    }
}

Вывод:

nums[0] = 9
nums[1] = 8
nums[2] = 7
nums[3] = 6
nums[4] = 5
nums[5] = 4
nums[6] = 3
nums[7] = 2
nums[8] = 1
nums[9] = 0
0
ответ дан 23 November 2019 в 02:51
поделиться

Простой метод отсортировать международное убывание массива:

private static int[] descendingArray(int[] array) {
    Arrays.sort(array);
    int[] descArray = new int[array.length];
    for(int i=0; i<array.length; i++) {
        descArray[i] = array[(array.length-1)-i];
    }
    return descArray;
}
0
ответ дан 23 November 2019 в 02:51
поделиться

Иначе с Компаратором

import java.util.Arrays;
import java.util.Comparator;
...

Integer[] aInt = {6,2,3,4,1,5,7,8,9,10};
Arrays.sort(aInt, Comparator.reverseOrder()  );
-1
ответ дан 23 November 2019 в 02:51
поделиться

Вы можете использовать это:

    Arrays.sort(data, Collections.reverseOrder());

Collections.reverseOrder () возвращает Comparator с использованием обратного естественного порядка. Вы можете получить инвертированную версию собственного компаратора, используя Collections.reverseOrder (myComparator) .

90
ответ дан 23 November 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: