Имеется Map
и содержит такие данные
{markFV=[6, 1, 8, 90], mark01=[341, 144, 541, 501, 23]}
Как отсортировать числа по убыванию, т. е. получить такой вид:
{markFV=[90, 8, 6, 1], mark01=[541, 501, 341, 144, 23]
Если коротко, то такие данные получаются путём jsonObject.append
, затем присваиваю переменной Map, JSON объект с помощью Map map3 = jsonObject.toMap();
И получаю такие данные. Остаётся отсортировать внутренние массивы.
Отсортировать значения в карте можно с помощью метода Arrays.sort
:
Map<String, int[]> map = new HashMap<>();
map.put("markFV", new int[]{6, 1, 8, 90});
map.put("mark01", new int[]{341, 144, 541, 501, 23});
map.forEach((key, value) -> Arrays.sort(value));
// вывод
map.forEach((key, value) ->
System.out.println(key + "=" + Arrays.toString(value)));
// markFV=[1, 6, 8, 90]
// mark01=[23, 144, 341, 501, 541]
если у тебя Map<String, Integer>
, то очень лаконично можно отсортировать массивы вот так:
map.values().forEach(array -> Arrays.sort(array, Collections.reverseOrder()));
Если же там int
, то получается менее привлекательно (извиняюсь за "изящную" сортировку, я думаю суть вопроса не в том как вы ее реализуете у себя):
for (Map.Entry<String, int[]> entry : map.entrySet()) {
int arrLength = entry.getValue().length;
Arrays.sort(entry.getValue());
int[] newArr = new int[arrLength];
for (int i = 0; i < arrLength; i++) {
newArr[newArr.length - (i + 1)] = entry.getValue()[i];
}
entry.setValue(newArr);
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Добрый день друзья и подруги , помогите вставить addBatch()в данный код
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском