2015-04-23 3 views
1

Так что я пытаюсь сортировать мой массив ArrayList от максимального к минимуму. Пользователь может вводить только цифры, которые затем преобразуются в строку. И это все работает очень хорошо, но когда я показываю свои результаты я получаю что-то вроде этого ...Сортировка ArrayList в убывающем порядке

98 
81 
81 
76 
64 
105 
103 
100 

Кто знает, как сделать это своего рода ...

105 
103 
100 
98 
81 
81 
76 
64 
+0

Является ли это домашнее задание? – Steven

+0

Что случилось с ArrayList ? –

+0

@Steven Мы все закончили с нашей домашней работой в течение года, и профессор просто дает дополнительные задания всем, кто хочет их попробовать. У меня была сортировка в порядке убывания, но она перечислила бы ее от двух до трех цифр. Если это имеет смысл lol – Dom

ответ

3

Вы храните цифры String и поэтому сортируете их лексикографически ('9' приходит после '1'). Вместо этого вы должны разобрать строки до Integer (например, используя Integer.valueOf) и сохранить их в ArrayList<Integer>. Теперь, когда вы его сортируете, элементы будут оцениваться в соответствии с их числовым значением.

+0

, который отлично работал! Я использую NetBeans JOptionPane, и когда у меня есть программа, в которой у меня есть только Integer.parseInt (текстовое поле), вместо добавления строки. – Dom

2

Dom - Хранить в помните, что строка - это куча символов, и каждый символ имеет целочисленное значение. Сортировка строк! == сортировка чисел.

+0

Спасибо, что помогло мне решить мою проблему. Я программировал плагины Bukkit Minecraft и занимаюсь этой работой в школах программирования Java, и они немного противоречат тому, как работает Java в моем мозгу haha ​​ – Dom

2

Вот код

List<String> firstArrayList = new ArrayList<String>(); 
    firstArrayList.add("4"); // .add(readUSerInput()); 
    firstArrayList.add("30"); 
    firstArrayList.add("1"); 
    firstArrayList.add("02"); 

    ArrayList<Integer> newArrayList = new ArrayList<Integer>(); 

    for(String numero: firstArrayList){ 
     newArrayList.add(Integer.parseInt(numero)); 
    } 

    newArrayList.sort(Collections.reverseOrder()); 

    // To check 
    for(Integer numero: newArrayList){ 
     // use a Scanner() to print numero to the screen 
    } 
+0

Что такое Util.afficher()? – JustinKSU

+0

Не будет ли это сортировать в порядке ASCENDING? – JustinKSU

+0

спасибо, что заметили, я отредактировал соответственно, используйте Collection.reverseOrder() – Fundhor

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