Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Сортировка warning


Автор: KeyLord 3.6.2008, 16:46
Приветствую.
Есть задание:
Ввести n строк с консоли. Упорядочить и вывести строки в порядке возрастания их длин

вот мой код:
Код

    public void SortMaxLen(ArrayList<String> als) {
        sort(als, new Comparator() {
        public int compare(Object o1, Object o2) {
                String o1s, o2s;
                o1s = (String) o1;
                o2s = (String) o2;
                if (o1s.length() > o2s.length()) return 1;
                if (o1s.length() < o2s.length()) return -1;
                return 0;
        }
        });
        System.out.println(als);
    }

работает правильно, но идея выбрасывает варнинг: uses unchecked or unsafe operations
проясните, пожалуйста, для меня, что здесь не так?

Автор: Старовъръ 3.6.2008, 16:52
Возможно следовало бы вначале проверить являются ли объекты о1 и о2 строками, а потом приводить типы
Код

if(o1 instanceof String)
  o1s = (String)o1;
 Если нет, то укажи строку, в которой выбивается это предупреждение.

Автор: fixxer 3.6.2008, 17:29
Ели версия джавы >= 5, то имхо лучше так:
Код

    public void SortMaxLen(ArrayList<String> als) {
        sort(als, new Comparator<String>() {
        public int compare(String o1, String o2) {
                if (o1.length() > o2.length()) return 1;
                if (o1.length() < o2.length()) return -1;
                return 0;
        }
        });
        System.out.println(als);
    }

Автор: niasilil 3.6.2008, 17:32
Это скорее всего изза компаратора. Он же generics изспользует, а у тебя raw type. Вот компилятор и недоволен.

Код

    public void SortMaxLen(ArrayList<String> als) {
        sort(als, new Comparator<String>() {

            public int compare(String o1, String o2) {
...

Автор: KeyLord 3.6.2008, 22:35
fixxer, niasilil, спасибо, сразу написать String я не додумался.

Автор: m1st 16.4.2012, 23:06
Решение этого задания есть тут: http://forum.vingrad.ru/forum/act-ST/f-104/t-350486/unread-1.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)