Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Сортировка коллекции, на выходе получаю ошибку / 11 сообщений из 11, страница 1 из 1
06.07.2007, 17:18:34
    #34644640
Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка коллекции, на выходе получаю ошибку
Добрый день!

Есть некий класс, которые считывает данные из файла, разделяет данные и записывает их в коллекцию.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
 package  BlackContacts;
 import  java.io.BufferedInputStream;
 import  java.io.BufferedReader;
 import  java.io.FileReader;
 import  java.io.IOException;
 import  java.util.Collections;
 import  java.util.Comparator;
 import  java.util.ArrayList;
 import  java.util.List;
 import  java.util.regex.Pattern;

 public   class  getContacts 
{
     private  BufferedReader in;
     private  List<Contact> contacts;
    
    /** Creates a new instance of ViewContact */
     public  getContacts( String in )  throws  IOException 
    {
         this .in =  new  BufferedReader(  new  FileReader( in ) );
        contacts =  new  ArrayList<Contact>();
    }
    
     public  List<Contact> get()  throws  IOException 
    {
        String s =  null ;
        Pattern p = Pattern.compile("\\|");
        
         try  
        {
             while ( ( s = in.readLine() ) !=  null  ) 
            {
                String[] contact = p.split( s );
                contacts.add(  new  Contact( contact[ 0 ], contact[ 1 ], contact[ 2 ], contact[ 3 ] ) );
            }
        }
         finally  
        {
            in.close();
        }
        
        Collections.sort( contacts,  new  sortContacts() );
        
         return  contacts;
    }

    // Класс сортировки контактов
     class  sortContacts  implements  Comparator 
    {       
         public   int  compare(Object o1, Object o2) 
        {
             return  ((Contact) o1).name().compareTo( ((Contact) o2).name() );
        }
    }
}

Каждая ячейка коллекции содержит в себе тип данных Contact
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
 package  BlackContacts;

 public   class  Contact {
     private  String name;
     private  String lastName;
     private  String phoneNumber;
     private  String email;
    
    /** Creates a new instance of Contact */
     public  Contact( String name, String lastName, String phoneNumber, String email ) {
         this .name = name;
         this .lastName = lastName;
         this .phoneNumber = phoneNumber;
         this .email = email;
    }
    
     public  String name() {
         return  name;
    }
    
     public  String lastName() {
         return  lastName;
    }
    
     public  String phoneNumber() {
         return  phoneNumber;
    }
    
     public  String email() {
         return  email;
    }
}

Скрипт запускается, но, получаю "предупреждение".
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
init:
deps-jar:
Compiling  4  source files to D:\dev\java\projects\BlackContacts\build\classes
D:\dev\java\projects\BlackContacts\src\getContacts.java: 42 : warning: [unchecked] unchecked conversion
found   : BlackContacts.getContacts.sortContacts
required: java.util.Comparator<?  super  BlackContacts.Contact>
        Collections.sort( contacts,  new  sortContacts() );
D:\dev\java\projects\BlackContacts\src\getContacts.java: 42 : warning: [unchecked] unchecked method invocation: <T>sort(java.util.List<T>,java.util.Comparator<?  super  T>) in java.util.Collections is applied to (java.util.List<BlackContacts.Contact>,BlackContacts.getContacts.sortContacts)
        Collections.sort( contacts,  new  sortContacts() );
 2  warnings
compile:
run:
BUILD SUCCESSFUL (total time:  0  seconds)

Подскажите, как мне понять, в чем проблема?

Заранее благодарен за любую помощь и комментарии!
...
Рейтинг: 0 / 0
06.07.2007, 17:22:58
    #34644655
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка коллекции, на выходе получаю ошибку
проблемы тут нет, все компилится, можно запускать.
просто компилятор предупреждает об использовании коллекций без указания
типа их элементов (так называемые generic)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
06.07.2007, 19:08:30
    #34644916
y3u
y3u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка коллекции, на выходе получаю ошибку
ну не свосем дело в коллекции... дело в нетипизированном компараторе =D

Нельзя называть классы с маленькой буквы, можно по ушам получить... Кстати, лучше в своем классе сделай имплементацию интерфейса Comparable... Это раз, а во вторых, в твоем частном случае, будет в разы удобнее и быстрее использовать TreeSet, у тебя при добавлении в коллекцию тогда будет сразу же вставать на правильное место элемент...
...
Рейтинг: 0 / 0
07.07.2007, 16:27:28
    #34645541
Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка коллекции, на выходе получаю ошибку
y3uну не свосем дело в коллекции... дело в нетипизированном компараторе =D
Я в принципе сразу понял, что речь о компараторе :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    // Класс сортировки контактов
     class  SortContacts  implements  Comparator<Contact> 
    {       
         public   int  compare(Contact o1, Contact o2) 
        {
             return  o1.name().compareTo( o2.name() );
        }
    }

y3uНельзя называть классы с маленькой буквы, можно по ушам получить...
+1

y3uКстати, лучше в своем классе сделай имплементацию интерфейса Comparable...
Могли бы Вы пояснить, почему?

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

Ответившим огромное спасибо!!
...
Рейтинг: 0 / 0
07.07.2007, 23:06:48
    #34645748
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка коллекции, на выходе получаю ошибку
y3uНельзя называть классы с маленькой буквы, можно по ушам получить...

Это где написано?
...
Рейтинг: 0 / 0
07.07.2007, 23:22:26
    #34645755
Хрюхрюшкин.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка коллекции, на выходе получаю ошибку
mayton y3uНельзя называть классы с маленькой буквы, можно по ушам получить...

Это где написано?
Это такой общепринятый стиль.
...
Рейтинг: 0 / 0
08.07.2007, 18:30:29
    #34646167
y3u
y3u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка коллекции, на выходе получаю ошибку
mayton y3uНельзя называть классы с маленькой буквы, можно по ушам получить...

Это где написано?

написано тут
http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html#367

стиль необхоимо соблюдать строго , т.к. это принципиальный момент при коллективной разработке...

Black
можно на Ты... не придется писать компаратор, у тебя класс сам будет знать от том как он должен быть отсортирован... Отдельно компаратор имеет смысл писать,если надо реализовать алгоритм сортировки двух разных классов, либо, если алгоритм гигантский, чтобы не громоздить класс, либо если предполагается возможная смена этого алгоритма взависимости от каких-либо условий (использование фектори)... вобщем в простейших случаях луяше использовать интерфейс Comparable...
...
Рейтинг: 0 / 0
08.07.2007, 18:31:20
    #34646168
y3u
y3u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка коллекции, на выходе получаю ошибку
тьфу... каммент попал в квотинг
...
Рейтинг: 0 / 0
08.07.2007, 20:14:23
    #34646231
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка коллекции, на выходе получаю ошибку
Дока носит рекомендательный характер. Она выпячивает наружу десяток правил на которые можно забить с аппаратом. А вот наиболее значимый аспект - правила декларации методов и свойств для Beans в ней почему-то опущены.

----------------
- У него такой кот, до которого тебе расти и расти.
...
Рейтинг: 0 / 0
09.07.2007, 09:19:06
    #34646505
y3u
y3u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка коллекции, на выходе получаю ошибку
maytonДока носит рекомендательный характер. Она выпячивает наружу десяток правил на которые можно забить с аппаратом. А вот наиболее значимый аспект - правила декларации методов и свойств для Beans в ней почему-то опущены.

в нормальных компаниях - обязательный, более того, в нормальных компаниях для этого даже есть в репозитории теплейты, перференсы и сеттингсы для различных IDE, чтобы в той или иной степени автоматизировать процес кодинга под конценции... я не буду спорить, т.к. доказывать факты - бессмысленное занятие... а по Java Beans есть отдельная спецификация...
...
Рейтинг: 0 / 0
09.07.2007, 13:45:11
    #34647438
Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка коллекции, на выходе получаю ошибку
y3u
можно на Ты... не придется писать компаратор, у тебя класс сам будет знать от том как он должен быть отсортирован... Отдельно компаратор имеет смысл писать,если надо реализовать алгоритм сортировки двух разных классов, либо, если алгоритм гигантский, чтобы не громоздить класс, либо если предполагается возможная смена этого алгоритма взависимости от каких-либо условий (использование фектори)... вобщем в простейших случаях луяше использовать интерфейс Comparable...

Понял, спасибо за разъяснение!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Сортировка коллекции, на выходе получаю ошибку / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]