Сортировка в лексикографическом (алфавитном) порядке по яве - PullRequest
1 голос
/ 11 декабря 2011

У меня есть цикл for, который печатает данные. В первой позиции буква, а во второй цифра. Как это:

H 8
T 3
A 9
F 4

Как мне отсортировать эти данные в лексикографическом (алфавитном) порядке (ключ - буква)? Выход должен быть:

A 9
F 4
H 8
T 3

Должен ли я поместить данные в список и использовать Collections.sort(list);? В этом случае номера не в нужной позиции.

P.S На самом деле это небольшая часть домашнего задания, но я не знаю, как это решить.

Ответы [ 3 ]

3 голосов
/ 11 декабря 2011

Если вы определите свой тип данных как:

class Data implements Comparable<Data> {
     private char letter;
     private int number;

     public int compareTo(Data d) {
        if(letter > d.letter) return 1;
        if(letter < d.letter) return -1;
        return 0;
     }
}

Затем вы можете поместить свои Data экземпляры в ArrayList и использовать Collections.sort.

0 голосов
/ 15 апреля 2013

* для пользователей Java

поместите ваши данные в хэш-карту (yourMap).

HashMap<Integer,String> map = new HashMap<Integer,String>();
youMap.put(H,8);
youMap.put(T,3);
youMap.put(A,9);
youMap.put(F,4);



List sortedKeys=new ArrayList(yourMap.keySet());
Collections.sort(sortedKeys);

for(String key: sortedKeys){
system.out.println(key+" "+yourMap.get(key) );
0 голосов
/ 11 декабря 2011

Вы также можете использовать реализацию Карта , например TreeMap , используя символ в качестве Key и число в качестве Value. Таким образом, вам не нужно инкапсулировать символ и число в одном объекте и при этом сохранять отображение.

Этот ответ на другой вопрос показывает, как получить ключи с этой карты в отсортированном порядке. Оттуда вы можете использовать ключи и получать значения в отсортированном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...