Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/75: Рейтинг темы: голосов - 75, средняя оценка - 4.71
2 / 2 / 1
Регистрация: 28.10.2013
Сообщений: 114

Сортировка TreeMap по значению Integer

06.11.2015, 01:44. Показов 14012. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, не хотелось задавать такой простой(по моему мнению) вопрос, но я перерыл по данному вопросу очень много подобных запросов, материалов, и я действительно не понимаю, как мне это сделать в моем случаи, серьезно, не могу понять. Помогите пожалуйста разобраться.
Java
1
TreeMap<String, Integer> wordsMap = new TreeMap<String, Integer>();
Как мне заставить это сортироваться по значению Integer?
Пытался как то так, но куча ошибок:
Java
1
2
3
4
5
6
7
8
                    TreeMap<String, Integer> wordsMap = new TreeMap<>(new Comparator<Integer>()
                    {
                        public int compare(Integer i1, Integer i2)
                        {
                            return i1.compareTo(i2);
                        }
                    }
                    );
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.11.2015, 01:44
Ответы с готовыми решениями:

Сортировка по значению в TreeMap
Мне нужно отсортировать мой тримап по значению в порядке убывания,оба параметра-целые числа.Ключ-это номер камня,Значение-масса камня.Но...

Сортировка TreeMap StringComparer.Ordinal
Сортировка TreeMap по ключу в java, также как в C# я сортировал массив list.Sort(StringComparer.Ordinal); Нужна именно сортировка...

Нельзя преобразовать тип function(a: integer;b: integer):integer к real
unit matr1; interface type matr2=array of real; matr3=array of real; procedure sum (A:matr3;var B:matr2; n:integer); ...

11
 Аватар для ne2win
206 / 206 / 71
Регистрация: 25.02.2014
Сообщений: 569
06.11.2015, 01:52
K0T, никак, по крайней мере, без создания левых структур.
1
2 / 2 / 1
Регистрация: 28.10.2013
Сообщений: 114
06.11.2015, 02:49  [ТС]
то есть нельзя написать какой то подходящий компаратор?
А если через левые структуры, это как? можно , пожалуйста, в кратце описать(я имею ввиду, какие именно структуры)
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
06.11.2015, 10:06
а можно спросить зачем это?
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
06.11.2015, 11:01
K0T,

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
public class Sort {
 
    public static void main(String[] args) {
        sort();
    }
 
 
    private static void sort() {
        Map<String, Integer> map = new TreeMap<String, Integer>();
        map.put("A", 3);
        map.put("B", 4);
        map.put("C", 1);
        map = sortByValues(map);
 
        System.out.println(map);
    }
 
    public static <K, V extends Comparable<V>> Map<K, V> sortByValues(final Map<K, V> map) {
        Comparator<K> valueComparator = new Comparator<K>() {
            public int compare(K k1, K k2) {
                return map.get(k1).compareTo(map.get(k2));
            }
        };
        Map<K, V> sortedByValues = new TreeMap<K, V>(valueComparator);
        sortedByValues.putAll(map);
        return sortedByValues;
    }
}
1
2 / 2 / 1
Регистрация: 28.10.2013
Сообщений: 114
06.11.2015, 12:50  [ТС]
Задание так поставлено. полное задание: Есть текст, нужно вывести слова и частота, с которой они встречаются, препод, говорил, чтобы я делал через ТрииМап

Добавлено через 1 минуту
YuraAAA, спасибо, попробую
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
06.11.2015, 13:11
K0T, чтобы выполнить это задание ненадо ничего сортировать
1
2 / 2 / 1
Регистрация: 28.10.2013
Сообщений: 114
07.11.2015, 15:38  [ТС]
Задание поставлено так, что нужно использовать ТрииМап, а результат выводился в порядке убывания, от самых частых слов до самых редких.
YuraAAA, спасибо, вариант хороший, но я так понимаю там меняются ключи и значения местами, мне нужно чтобы не было потери элементов, мои элементы содержат много одинаковых значений под разными ключами, и почти все они теряются при таком методе(
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.11.2015, 16:00
K0T, выводите результат в лист и сортируйте его. Ненадо сортировать TreeMap
1
2 / 2 / 1
Регистрация: 28.10.2013
Сообщений: 114
07.11.2015, 17:54  [ТС]
Спасибо большое за вариант

Добавлено через 32 минуты
Java
1
2
3
4
5
6
7
8
9
                    List list = new ArrayList(wordsMap.entrySet());
                    Collections.sort(list, new Comparator<Map.Entry<String, Integer>>()
                    {
                       @Override
                       public int compare(Map.Entry<String, Integer> a, Map.Entry<String, Integer> b)
                       {
                           return b.getValue() - a.getValue();
                       }
                    });
Я прошу прощения, просто возник ещё такой вопрос, я создал лист отсортировал, всё отлично работает, но возникла проблема с выводом. По заданию мне нужно вывести результат в виду CSV таблицы(тоесть примерно так: Береза, 2, 0.15 % (слово, частота, относительная частота)) и мне нужен доступ отдельно к ключу и значению элемента. В моем листе, данные хранятся в таком виде(на картинке), но в коде я не могу получить доступ в key или value. Если элемент моего Листа это строка, то я могу попробовать просто по индексам разделить эту строку на ключ и на значение, но может есть какой то другой способ получить доступ к ключу и значению, более нормальный
Миниатюры
Сортировка TreeMap по значению Integer  
0
2 / 2 / 1
Регистрация: 28.10.2013
Сообщений: 114
07.11.2015, 18:30  [ТС]
Всё, спасибо, сам как то разобрался, если вдруг кому то пригодится:
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
    public static void CSVTable(String str, int wordsInTheText)
    {
        String key = "";
        String value = "";
        int i = 0;
 
        while (str.charAt(i) != '=')
        {
            key += str.charAt(i);
            i++;
        }
        i++;
        while (i < str.length() && (Character.isLetterOrDigit(str.charAt(i))))
        {
            value += str.charAt(i);
            i++;
        }
        System.out.print(key);
        System.out.print("; ");
        System.out.print(value);
        System.out.print("; ");
        System.out.print((double) Integer.parseInt(value) / wordsInTheText * 100 + " %;");
        System.out.println("");
    }
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.11.2015, 22:07
K0T, надо создать класс с нужными вам полямии использовать его в листе и в тримапе
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.11.2015, 22:07
Помогаю со студенческими работами здесь

Сортировка по Integer
Мне никак не удается создать сортировку по целым числам. Либо куча ошибок, либо в таблице ничего не отображается. Прошу помочь. Желательно,...

Нельзя преобразовать тип function(z: integer;w: integer;e: integer): real к real
program pract18; uses crt; var x,a,i,k:integer; y:real; function prm1 (z,w,e:integer):real; begin for e:=1 to 20 do ...

Сортировка map по значению
Доброго времени суток как можно безболезненно отсортировать map по значению? я пробовал bool Sort_by(const...

Сортировка map по значению
Есть некий map: map&lt;string, int&gt; MyMap; Нужно вывести на экран всё содержимое контейнера в порядке наибольшего значения. После...

Сортировка по значению $_GET
Здравствуйте. Есть таблица: id | title | text | url | category ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru