|
|
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Подскажите, пожалуйста, можно ли в TreeMap, используя компоратор сортировать не по ключам, а по их значениям? Если нельзя, то как подойти к этой проблеме? Нужна идея. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 21:42 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Создать класс ключа, который бы имел ссылку на объект-значение И в компараторе сравнивать эти значения как-нибудь. Правда, класс объектов-значений тоже должен будет реализовывать Comparable… Что-то другого на ум не идёт, хотя и это - вырезка гланд автогеном. А зачем надо сортировать по значениям? --С уважением, ponomarevvb-- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2005, 22:13 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2005, 02:04 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Учусь, а учиться проще на нужных вещах. Сделал простенькую программку, которая создает частотный словарь иностранных слов в файлах натянутых из инета. Помогает понять сколько не знаешь слов характерных для определенной темы на аглицком. Спасибо за подсказки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2005, 18:28 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
to johanna Не будет вВш пример сортировать по значениям ключей. По умолчанию compare( Object a, Object b ) как объект принимает именно уникальные ключи. А проблема, как заставить принимать не уникальные значения ключей. Должен вроде быть какой-то выход. Почему нельзя по значениям сортировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 22:13 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
toСергей. Р. не только будет, он еще это и делает. проверьте сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2005, 22:42 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Код: 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. содержимое папки, сортированной по ключам abc book ix art lx cook nx dog rx cool tpr value uvw lost xyz rest новая папка созданная и отсортированная по значениям ix art abc book lx cook rx cool nx dog uvw lost xyz rest tpr value Process terminated with exit code 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 00:00 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
sorry, слово "уникальные" пропустила. организуйте свои данные в другую структуру- вот и решение вашей проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 00:14 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Тогда, на всякий случай, извиняюсь заранее. Переделка моего скрипта по Вашему предложению меня не осчастливила. Пока. Видимо, я что-то просмотрел. Буду разбираться с Вашим чистым примером. Спасибо за отзывчивость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 15:04 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Действительно работает, только понять каким образом я не могу. В классике компаратор выделяют в отдельный класс и работают с ним так: TM = new TreeMap(new MyComp () ); В этом случае сортируется по ключам. В Вашем пример реально сортирует по значениям, но мне не понятно как это происходит и как быть, если значения цифры? Чувствую недостаток теории, но где ее восполнить? В моих книгах и инете пока ничего путного не нашел. Не подскажете ли, где тут собака зарыта. Как определяются объекты, которые нужно сравнить, если они из пары ключ/значение и как быть если значение int? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 17:29 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Сергей. Р., вам же уже сказали, что отсортировать TreeMap по ключам не получится, т.к., если у разных ключей будут одинаковые значения, TreeMap скушает все пары кроме последней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 18:02 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
извините, имелось ввиду: отсортировать по значениям не получится :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 18:13 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Код: 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. Сергей. Р.В Вашем пример реально сортирует по значениям В примере выше была ошибка. Как определяются объекты, которые нужно сравнить, если они из пары ключ/значение и как быть если значение int? - Ключём в map сортируемом по значению должен быть не исходный ключ (слово), а (ключ + значение). Это не обязательно писать (ключ и так уникален), но нужно иметь ввиду. - Для того, чтобы в компараторе получить значение связанное с ключём (т.е. полный ключ, который и должен сравнивать компаратор) используется дублирующий мap. - int - не может быть значением, только Integer. Об этом пишут в любой книге по java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 20:19 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
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. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. Эх, чтоб он еще и откомпилировался. Умом я его объять не могу пока. Похоже проще обходной путь найти. В конце концов мне надо просто отсортировать по не уникальному значению и распечатать. Нормальные герои всегда идут в обход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 20:57 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Сергей. Р.Похоже проще обходной путь найти. В конце концов мне надо просто отсортировать по не уникальному значению и распечатать. Нормальные герои всегда идут в обход. правильно, самое простое сказать своей базе, где данные хранятся Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 22:08 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs В примере выше была ошибка. какая? пример выше сортировал по уникальным значениям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2005, 22:11 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Сергей. Р. Эх, чтоб он еще и откомпилировался. Умом я его объять не могу пока. Похоже проще обходной путь найти. В конце концов мне надо просто отсортировать по не уникальному значению и распечатать. Нормальные герои всегда идут в обход. Какие проблемы с объятием умом? :) Единственное над чем стоит задуматься, так это методо addWord и тем, почему не один оператор там нельзя переставить :) Нормальному герою стоит поставить java 1.5, либо заменить в моём коде генерики на касты классов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2005, 01:07 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
johanna NotGonnaGetUs В примере выше была ошибка. какая? пример выше сортировал по уникальным значениям Это был ответ не вам :) Человек написал, что ваш код работает для его целей. Он работает, но как вы сами отметили выше, не для его целей. Автору требует сортировка по не уникальным значениям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2005, 01:10 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Я может быть не верно где-то выразился. В директории находятся текстовые документы на основе, которых строится частотный словарь. В хэшах все хорошо кроме частной задачи, как сделать сортироку по значениям (которые естественно не уникальны, т.к. разные слова могут появляться одинаковое число раз в исследуемом материале). И хочется сделать не через задницу. Как через задницу уже придумал, но это не красиво выглядит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2005, 10:48 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Сергей. Р.Я может быть не верно где-то выразился. В директории находятся текстовые документы на основе, которых строится частотный словарь. В хэшах все хорошо кроме частной задачи, как сделать сортироку по значениям (которые естественно не уникальны, т.к. разные слова могут появляться одинаковое число раз в исследуемом материале). И хочется сделать не через задницу. Как через задницу уже придумал, но это не красиво выглядит. Фу, блин. Если что-то не ясно - спроси. В коде который я привёл, treeMap сортируется по "значениям". [offtopic] Кстати, кто быстрее? :) Примерно так тестировать: Код: 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. Эта штука в 20(!) раз быстрее каунтера, которого я нарисовал раньше :) Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2005, 12:52 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUsФу, блин. Если что-то не ясно - спроси. В коде который я привёл, treeMap сортируется по "значениям". Спасибо за помощь, но будьте реалистом. Кто будет внимательно разбираться с примерм, который даже откомпилировать невозможно? Проблему я уже решил, только слова с малых и заглавных букв в разные деревья попадают и учитываются отдельно. Может подскажите, как в один регистр их перекидывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2005, 12:55 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
to Сергей. Р. прежде чем выбирать структуру для своих данных, не проще ли сначала проанализировать что я хочу сделать с моими данными: откуда получить, как сохранить, как обработать, как показать - а потом согласно этому выбирать подходящие для этого структуры. Т.е. если бы мне надо было сортировать данные по значениям, то я бы, например, TreeMap для своих данных не выбрала. Другим языком к чему брать чайник если собираешься варить суп? Суп, конечно, можно и в чайнике сварить, но удобно ли это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 11:35 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Постановка Сергея достаточно сложна для простого применения классов коллекций. По крайней мере мне показалось что реализация тянет на интерфейс таблицы к встраиваемой СУБД. ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 12:55 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Сергей. РСпасибо за помощь, но будьте реалистом. Кто будет внимательно разбираться с примерм, который даже откомпилировать невозможно? Я реалист. Пример отлично компилируется. Первый стребует jdk1.5, второму пойдёт всё кроме самых древних версий. Проблему я уже решил Расскажешь как? Может подскажите, как в один регистр их перекидывать? String#toLowerCase() mayton реализация тянет на интерфейс таблицы к встраиваемой СУБД Задача: подсчитать количество вхождений разных слов в текстовых файлах и отсортировать из по количеству вхождений. Постановку конечно можно бесконечно долго уродовать, предъявляя разные хитрые требования, но учитывая слова Сергея Р "Учусь, а учиться проще на нужных вещах." , на верное не стоит этим заморачиваться :) Самостоятельной ценности такая задача не имеет, а конкретное прикладное использование накладывает свои ограничения. Мне кажется, что в общем случае, дерево с узлами-символами (+ аттрибут количество вхождений) для быстрого нахождения слова и инкремента счётчика + итератор по этому дереву, чтобы получить список "слово, количество" + быстрая сортировка - великолепное решение. Различных слов не так уж много, чтобы начались проблемы с нехваткой памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 16:10 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUs wrote: > Задача: подсчитать количество вхождений разных слов в текстовых файлах и > отсортировать из по количеству вхождений. > Задача элементарно решается на PERL: Код: plaintext 1. 2. 3. 4. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 17:18 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
To johanna. Никаких баз мне не надо, вообще, а TreMap выбран из-за того, что это хэш и есть удобная и быстрая возможность найти искомый ключ, являющийся словом, увеличить на единицу значение появления этого слова в исследуемых файлах и cделать My_TreeMap.put(word, new String (new_namber)); Когда все файлы просмотрены, просто сделать листинг результатов. Проблема появилась когда решил отсортирвать слова по частоте появления. Если вызываешь так: TreeMap sortedMap = new TreeMap(new MyComp()); То в class MyComp implements Comparator{ public int compare(Object o1, Object o2) { return (o1).compareTo(o2); } Object o1 и Object o2 это ключи TreeMap. Как в нем добраться до значений, соответствующих этим ключам непонятно. Поэтому и спросил совета, возможно ли вообще по простому в данной ситуации как-то вывернуться. Через .... можно хоть десяток способов найти. Но интересно, как это сделать красиво и оптимально, если используешь TreeMap. To NotGonnaGetUs У меня и второй не откомпилировался, но это частности. Через Ж.. можно решить с использованием TreeSet. Пример как сортировать по фамилии, если элемент коллекции: строка Имя Фамилия, есть в любой книге по Java 2. На счет ценности могу поспорить. Как показал поиск в Инете задача, как отсортировать по значения в разных ситуациях достаточно актуальна и эта тема может еще кому-нибудь помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 18:52 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Сергей. Р.cделать My_TreeMap.put(word, new String (new_namber)); Integer.valueOf(new_namber)!!! Через .... можно хоть десяток способов найти. Но интересно, как это сделать красиво и оптимально, если используешь TreeMap. Использовать HashMap для хранения ключ-значение - это через жопу? :) Достаточно понять только то, что у тебя ключ - это пара "слово" "количество вхождений". Сразу станет понятно, почему тебе нужен Set, а не Map, что бы было красиво. У меня и второй не откомпилировался, но это частности. Соболезную, расставить иморты и назвать правильно файлы, в которые вставляешь код, нужно уже уметь. Как показал поиск в Инете задача, как отсортировать по значения в разных ситуациях достаточно актуальна и эта тема может еще кому-нибудь помочь. Map не определяет порядок элементов. Любые варианты (ТreeMap, LinkedHashMap) это уже извращения, поскольку вольно не вольно превращают map во что-то другое (больше памяти, зависимость времени вставки/выборки от числа записей и т.п. ) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 19:10 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Использовать HashMap для хранения ключ-значение - это через жопу? :) Это я про сортировку имел в виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2005, 23:21 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
и всё же я бы не стала использовать для этих целей TreeMap. Уже только потому, что мне нужна сортировка как по ключам так и по значениям. Значит создавая TreeMap мы уже сортируем по ключам, хотя это может и не понадобиться. HashMap Быстрее, чем TreeMap. А сортировать в обе стороны можно через Collections.sort и Comparator. Вобщем если переписать мой первый пример, то это будет выглядеть так: Код: 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. sorted by values: [ix =art, abc=book, lx =cook, rx =cool, nx =dog, uvw=lost, xyz=rest, fvb=value, tpr=value] sorted by keys [abc=book, fvb=value, ix =art, lx =cook, nx =dog, rx =cool, tpr=value, uvw=lost, xyz=rest] Process terminated with exit code 0 причём и уникальные значения без проблем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 00:53 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
To johanna А я и делал на HashMap порвоначально, но потом не совсем разобравшись, как это будет работать, соблазнился тем, что TreeMap принимает компаратор. Любая проблема имет массу решений, надо только их найти. Буду переделовать на основе Вашего предложения. Спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2005, 12:38 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
To johanna Такая казалось бы мелочная проблема отнимает массу времени. Ваш пример, все равно не так как нужно работает для цифр. Результат: sorted by values: [abc=1, ix =11, tpr=12, lx =3, rx =30, nx =32, uvw=4, xyz=6, fvb=99] Придется похоже изголяться по другому. Ну уж точно через ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 11:06 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
для цифр Вам надо только Comparator под цифры переписать. У меня он на string написан. Сравнивать не через equal a > или <. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 11:24 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
johanna wrote: > для цифр Вам надо только Comparator под цифры переписать. У меня он на > string написан. > Сравнивать не через equal a > или <. Уточнение: если заворачивать значения в Integer, то см. Integer.compareTo(Object) Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 11:34 |
|
||
|
Сортировка по значениям в TreeMap?
|
|||
|---|---|---|---|
|
#18+
Где ж вы раньше были? Уже до самого дошло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2005, 12:45 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2151834]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 355ms |

| 0 / 0 |
