Сортировка таблицы символов по значению в Java - PullRequest
0 голосов
/ 10 июля 2011

Таблица символов дает результат, отсортированный по ключу, но как мы можем отсортировать таблицу символов по значениям. Я использовал Arrays.sort(st,st.get(key)), но выдает ошибку:

не может найти символ: метод сортировать (ST, java.lang.Integer)


Моя программа выглядит примерно так. Все еще получаю ошибки:

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

public class DictionaryCounter {

    private final String key;

    public DictionaryCounter (String key){
            this.key = key;
        }

    public static class Frequency implements Comparator<DictionaryCounter>{
        public int compare(DictionaryCounter x, DictionaryCounter y){
            return x.get(key).compareTo(y.get(key));
        }
    }

    public static void main(String[] args) {

        ST<String, Integer> st = new ST<String, Integer>();
        //String key;

        while (!StdIn.isEmpty()) {
            key = StdIn.readString();
            if (!st.contains(key))
            { st.put(key, 1); }
            else
            { st.put(key,st.get(key) + 1 ); }
        }

        Arrays.sort(st,new Frequency (key));
        for (String s: st.keys()) {
            System.out.println(s + " " + st.get(s));
        }
    }
}

1 Ответ

5 голосов
/ 10 июля 2011

Вы не можете так сортировать - вам нужно реализовать Comparator<T> - например:

public class FooComparator implements Comparator<Foo> {

    private final String key;

    public FooComparator(String key) {
        this.key = key;
    }

    public int compare(Foo x, Foo y) {
        return x.get(key).compareTo(y.get(key));
    }
}

Тогда используйте:

Arrays.sort(st, new FooComparator(key));

(Трудно догадаться, какие типы используются без дополнительной информации, но, надеюсь, это даст вам достаточный старт ...)

...