Как collection.sort может отображать вывод в обратном порядке?

1

Может ли вывод collection.sort выводиться в порядке убывания, оставляя символ в том же месте? например. Вход = 100,200, a, 300 Выход = 300,200, a, 100. Я использую Arraylist, который является строковым типом.

String input = JOptionPane.showInputDialog("Enter a string:"); 
String[] abc = input.split(",");
ArrayList<String> num = new ArrayList<String>();
for (int i = 0; i < abc.length; i++)
{
    num.add(abc[i]);
}
Collections.sort(num, Collections.reverseOrder());
System.out.println(num);
  • 2
    Нет. Вам нужно будет создать свой собственный компаратор.
  • 0
    Это похоже на проблему XY; одно точно, вы не можете использовать Collections.sort() для этого.
Показать ещё 1 комментарий
Теги:

3 ответа

1
Лучший ответ

Компоновщик Collections.reverseOrder() можно использовать для сортировки списка в обратном порядке.

public class CollectionsDemo {
public static void main(String args[]) {  
  // create linked list object         
  LinkedList list = new LinkedList();  

  // populate the list 
  list.add(-28);  
  list.add(20);  
  list.add(-12);  
  list.add(8);  

  // create comparator for reverse order
  Comparator cmp = Collections.reverseOrder();  

  // sort the list
  Collections.sort(list, cmp);  

  System.out.println("List sorted in ReverseOrder: ");      
  for(int i : list){
     System.out.println(i+ " ");
  } 
  }
  }
1

Вы можете попытаться создать свой собственный компаратор следующим образом:

static <K,V extends Comparable<? super V>> 
            List<Entry<K, V>> reverseSortValues(Map<K,V> map) 
{

    List<Entry<K,V>> lst = new ArrayList<Entry<K,V>>(map.entrySet());

    Collections.sort(lst, 
            new Comparator<Entry<K,V>>() 
            {
                @Override
                public int compare(Entry<K,V> e1, Entry<K,V> e2) 
                {
                    return e2.getValue().compareTo(e1.getValue());
                }
            }
    );

    return lst;
}
0

Создать компаратор для обратного порядка -

Comparator cmp = Collections.reverseOrder();  

Затем отсортируйте список -

Collections.sort(num, cmp);    

Collections.reverseOrder() используется для получения Comparator который меняет естественный порядок.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню