powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / TreeSet - о_О
7 сообщений из 7, страница 1 из 1
TreeSet - о_О
    #34168544
где ошибка ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SortedSet pointersSet =  new  TreeSet( new  PointersComparator());
         for  ( int  i =  0 ; i <  10 ; i++) {
            pointersSet.add( new  Point(( int ) (Math.random() *  10 ), ( int ) (Math.random() *  10 )));
        }
        Iterator iterator = pointersSet.iterator();
         while  (iterator.hasNext()) {
            Object o = iterator.next();
            System.out.println("o = " + o);
        }

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
 public   class  PointersComparator  implements  Comparator {

     public   int  compare(Object o1, Object o2) {
         if  ((o1  instanceof  Point) && (o2  instanceof  Point)) {
            Point point1 = (Point) o1;
            Point point2 = (Point) o2;
             double  v11 = Math.pow(point1.getX(),  2 );
             double  v12 = Math.pow(point1.getY(),  2 );
             double  v21 = Math.pow(point2.getX(),  2 );
             double  v22 = Math.pow(point2.getY(),  2 );
             if  (v11 + v12 < v22 + v22) {
                 return  - 1 ;
            }  else   if  (v11 + v12 > v21 + v22) {
                 return   1 ;
            }  else  {
                 return   0 ;
            }
            // return (int) (v11 + v12 - v21 + v22); Так не получицо =((
        }  else  {
             return   0 ;
        }
    }
}

автор
o = java.awt.Point[x=1,y=0]
o = java.awt.Point[x=1,y=1]
o = java.awt.Point[x=2,y=4]
o = java.awt.Point[x=6,y=5]
o = java.awt.Point[x=0,y=8]
o = java.awt.Point[x=2,y=8]
o = java.awt.Point[x=1,y=7]
o = java.awt.Point[x=5,y=7]
o = java.awt.Point[x=9,y=7]
o = java.awt.Point[x=5,y=9]


предполагается сортировка точек по удалению от начала координат
...
Рейтинг: 0 / 0
TreeSet - о_О
    #34168939
никто не юзает TreeSet ? :)
...
Рейтинг: 0 / 0
TreeSet - о_О
    #34168946
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
v11 + v12 < v22 + v22
- ошибся в индексе переменной!
...
Рейтинг: 0 / 0
TreeSet - о_О
    #34168979
Kachalov
Код: plaintext
v11 + v12 < v22 + v22
- ошибся в индексе переменной!
спасиба ! искал ошибку долго :wall:
...
Рейтинг: 0 / 0
TreeSet - о_О
    #34169795
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ньюбНомерАдин
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
 public   class  PointersComparator  implements  Comparator {

     public   int  compare(Object o1, Object o2) {
         if  ((o1  instanceof  Point) && (o2  instanceof  Point)) {
            Point point1 = (Point) o1;
            Point point2 = (Point) o2;
             double  v11 = Math.pow(point1.getX(),  2 );
             double  v12 = Math.pow(point1.getY(),  2 );
             double  v21 = Math.pow(point2.getX(),  2 );
             double  v22 = Math.pow(point2.getY(),  2 );
             if  (v11 + v12 < v21 + v22) {
                 return  - 1 ;
            }  else   if  (v11 + v12 > v21 + v22) {
                 return   1 ;
            }  else  {
                 return   0 ;
            }
            // return (int) (v11 + v12 - v21 + v22); Так не получицо =((
        }  else  {
             return   0 ;
        }
    }
}


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 public   class  PointersComparator  implements  Comparator {

     public   int  compare(Object o1, Object o2) {
         if  (o1  instanceof  Point && o2  instanceof  Point) {
             return  compare((Point) o1, (Point) o2);
        }
         return   0 ;
    }

     public   int  compare(Point point1, Point point2) {
         return  ( int ) Math.signum(distance(point1) - distance(point2));
    }

     private   static   double  distance(Point point) {
         return  Math.pow(point.getX(),  2 ) + Math.pow(point.getY(),  2 );
    }
}

Один я думаю, что второй вариант лучше?
...
Рейтинг: 0 / 0
TreeSet - о_О
    #34170736
NotGonnaGetUs[quot ньюбНомерАдин]
Код: plaintext
1.
Math.signum 

Один я думаю, что второй вариант лучше?

в jdk_1_4_2 такого метода нет
...
Рейтинг: 0 / 0
TreeSet - о_О
    #34171208
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ньюбНомерАдинв jdk_1_4_2 такого метода нет
Скоро 1.6 в релиз выходит, какая может быть 1.4?
В любом случае, грех не написать такой метод самому.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / TreeSet - о_О
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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