|
|
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
Если не затруднит, то помогите прояснить ситуацию с компараторами для сортировки коллекции. У меня есть TreeSet в которм класс с двумя полями типа Integer для координат х и у. Используя метод subSet( Point( x, y), Piont( x, y)) я пытаюсь отсортировать обеъкты входящие в облать видимости координат, но получаю и те что за ней. Перепробовал разные варианты копаратора. Возможно ли решить такие задачи использовав копоратор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2015, 11:37 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
freeVan, компаратор определяет, какой из двух объектов больше. По какому принципу вы будете выбирать больший объект - решать вам. Что у одного объекта должно быть больше, чем у другого? В вашей задаче не понятно, что такое область видимости координат. Какую она имеет форму? Я себе так могу представить ситуацию: есть какая-то область в двумерной системе координат. Например, для простоты, круглая. У нее есть центр. У этого центра есть координаты x и y. И еще у этой области есть радиус. Тогда, чтобы как-то добраться до точек, попадающих внутрь этой круглой области, можно их отсортировать, посчитав в компараторе расстояние от точки до центра этой области. Точки с меньшим расстоянием будут меньше. Понятно, что внутрь области попадают точки, у которых расстояние до центра <= радиуса области. А определение границ для subSet - это уже следующая проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2015, 12:28 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
yelena, Спасибо что откликнулись! Область видимости это те значения Х и У которые я передаю в методе subSet это будет квадратная область. Допустим мне необходимы объекты Piont у которых х > 1 < 10 , y > 1 <10 subSet( Point( 1, 1 ) , Point( 10, 10 ) ) Както так объсню ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2015, 13:41 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
freeVan, ну и что получается, что вы хотите каким-то образом один раз отсортировать точки на координатной плоскости, а потом проходиться по ним при помощи разных subSet, подразумевающих разные квадраты? Эти точки отличаются только координатами x,y и расстоянием до начала координат. У вас subSet в виде квадрата не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2015, 14:51 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
yelena, у меня уже просто голова квадратная. пробую, ничего не выбирается после subSet. Возник вопрос дугой: если будет два разных TreeSet , с разными компараторами которые сортируют по Х и по У после первого subSet я делаю putAll в другой TreeSet который сортирует по У Тот putAll это будет ссылка на Класс Point или это копироваться будет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2015, 15:01 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
freeVan, если вопрос о том, будут ли создаваться копии объектов, то ответ - нет, копии объектов создаваться не будут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2015, 15:23 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
yelena, Спасибо Вам Елена большое! Все прояснили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2015, 15:27 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Спасибо. Озакомился, тут все сложнее чем мне надо, узлы как объекты хранящие ссылки, память будет расходована на все это, потом еще и массивы перебирать, затраты временные. Очень сложное дерево, до такого пока не дорос наверное, где такое применяется наверное чтото типа микробиологии или наблюдение за космосом, милларды точек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2015, 22:43 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
freeVankealon(Ruslan), Спасибо. Озакомился, тут все сложнее чем мне надо, узлы как объекты хранящие ссылки, память будет расходована на все это, потом еще и массивы перебирать, затраты временные. а TreeSet по вашему как сделан? freeVanОчень сложное дерево, до такого пока не дорос наверное, где такое применяется наверное чтото типа микробиологии или наблюдение за космосом, милларды точек. в вашем случае 2-d дерево, массив там не обязателен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2015, 21:26 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
freeVanДопустим мне необходимы объекты Piont у которых х > 1 < 10 , y > 1 <10 subSet( Point( 1, 1 ) , Point( 10, 10 ) ) Както так объсню Вы что-то совсем не в ту степь зарулили. Координаты {x,y} это Частично упорядоченное множество . Для него, конечно, можно создать компаратор, но он будет неоднозначным. Так как компаратор имеет 3 значения - больше, меньше, равен. А в частичном порядке их 4 - больше, меньше, равен, и "отношение не определено" Единственный способ упорядочить отношение это привести к единому числу f(x, y), например расстояние до определенной точки. И у вас типичная ошибка в вопросе, вы не описываете задачу, вы описываете своё решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2015, 08:22 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
freeVan, во либа, как раз под вашу задачу, может кому и пригодится FLANN - Fast Library for Approximate Nearest Neighbors ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2015, 09:00 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
freeVanЕсли не затруднит, то помогите прояснить ситуацию с компараторами для сортировки коллекции. У меня есть TreeSet в которм класс с двумя полями типа Integer для координат х и у. Используя метод subSet( Point( x, y), Piont( x, y)) я пытаюсь отсортировать обеъкты входящие в облать видимости координат, но получаю и те что за ней. Перепробовал разные варианты копаратора. Возможно ли решить такие задачи использовав копоратор? Я так понял Вам надо свой компаратор придумать...??? Ну так положите в него какой нибудь принцип...например удалённость координаты от какой нибудь точки Показатель=(x1-x2) квадрат + (y1-y2) квадрат А если от начала координат то вообще просто. Показатель=(x) квадрат + (y) квадрат. И сравнивайте показатели для сортировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2015, 09:11 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
irbis_al, Помоему гениально!!! Спасибо за идею, как раз таки от начала координат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 15:59 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
irbis_al, Пока не тестировал, но сразу понял где бдет проблема, а что если координата Х отрицательная или У? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 16:48 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
freeVanirbis_al, Пока не тестировал, но сразу понял где бдет проблема, а что если координата Х отрицательная или У? Ты напиши формулу расстояния по Пифагору. Там отрицательные возводятся в квадарат и уходят. Вот почемучка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 16:59 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
mayton, Квадрат отрицательного будет положительное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 17:03 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
freeVan, будешь продолжать спорить или всё таки напишешь формулу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 17:10 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
mayton, х1=-2; y1=-3; x2=2; y2=3; R1 = (-2)квадрат + (-3)квадрат ; R2 = (2)квадарат + (3квадрат ); R1 = 4 + 9 R2 = 4 + 9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 17:16 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
freeVan, всё правильно. В твоей системе метрик расстояние от (-2,-3) до (0,0) центра и от центра до (2,3) одинаково. Ты получил что хотел. И сортировка в данном случае будет считать что эти Points одниаковы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 18:24 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
mayton, Спасибо за активнсть. Думаю что можно будет изменить ответ формулы на отрицательный если одна из координат отрицательня. Пока занят другим, потом проверю на практике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 18:38 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
Вот тебе еще для коллекции. Код: java 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. Если захочешь переписать под Double то помни что сравнение разных визуально (на экране) констант может внезапно дать true в силу погрешности кастинга. И есть побочные эффекты при сравнении Double.NaN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 19:22 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
mayton, Вообще шикарно, супер спасибо! У меня там еще есть пост по поводу ByteBufferPool, посмотрите. http://www.sql.ru/forum/1171339/bytebufferpool ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 19:30 |
|
||
|
Сортировка TreeSet
|
|||
|---|---|---|---|
|
#18+
Не подход ит. Point 1 : х = 3 у = 4; Point 2 : x = 4 y = 3; получается одинаково удалены от начала координат. На практике мне надо отсортировать только те точки которые попадают в область видимости. Например: Point 1 : х = 3 у = 4; Point 2 : x = 6 y = 7; В область видимости попадают те точки у которых 3 <= x <= 6 и 4 <= y <=7. Нужен хитрый компаратор, либо использовать рекомендуемые библиотеки с кучей кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2015, 22:00 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39031931&tid=2125036]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 344ms |

| 0 / 0 |
