Мне нужно создать панель навигации с расширяемым списком, поэтому я написал этот код для создания своего меню:
Map<String, List<String>> lstChild;
List<String> lstTitle;
List<String> title = Arrays.asList("Social", "Collaborazione", "Web", "Squadre");
List<String> childSquadre = Arrays.asList("U13", "U16", "U18");
List<String> childSocial = Arrays.asList("FB", "Instagram", "Linkedin");
lstChild = new TreeMap<String, List<String>>();
lstChild.put(title.get(0), childSquadre);
lstChild.put(title.get(1), childSocial);
lstTitle = new ArrayList<String>(lstChild.keySet());
Последний lstTitle сортируется по алфавиту, даже если я добавляю каждый элемент в нужном мне порядке, а именно: Social, Collaborazione, Web, Squadre.
Итак, как мне отсортировать массив lstTitle по алфавиту?
Где используется lstChild?
@Eselfar используется в последней строке
Да, но я думаю, это будет использовано и позже?
Неа. Только в эту часть кода
Я не понимаю. Зачем тогда нужно создавать TreeMap? Просто используйте title как lstTitle
Для чего? Я не понимаю. Моя последняя цель - создать расширяемое меню. Могу ли я создать TreeMap для объединения всех списков массивов
Я спросил, где используется lstChild, и вы ответили: only into this part of code. В предоставленном вами коде lstChild на самом деле не используется, поскольку конечный результат в lstTitle такой же, как если бы был выполнен lstTitle = new ArrayList<>(title);.
Ммм, мне нужно попробовать. Я дам Вам знать




lstChild = new TreeMap<String, List<String>>();
Класс TreeMap реализует интерфейс Map, аналогичный классу HashMap.
Основное различие между ними заключается в том, что HashMap - это неупорядоченная коллекция, а TreeMap сортируется в порядке возрастания его ключей.
Так что замените свой TreeMap на HashMap
Проблема действительно в TreeMap, но HashMap не является решением: This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time.источник
Если я использую HashMap, я получаю то, что хочу. Но @Eselfar, что посоветуете делать?
Я не думаю, что то, что сказал @Eselfar, полностью правильно, обратитесь к этому geeksforgeeks.org/…
Какая часть страницы, на которую вы ссылаетесь, противоречит тому, что я сказал? Согласно вашему документу, лучше использовать LinkedHashMap, поскольку «ключи упорядочены по порядку их вставки». я согласен
Спасибо @Eselfar LinkedHashMap, это лучшее решение
Итак, наконец, используйте:
lstChild = new LinkedHashMap <String, List<String>>();
keySet()-метод возвращает ключи в порядке возрастания. Это в алфавитном порядке для строк. Так что он делает именно то, что от него ожидается. Если вам нужно другое поведение, не используйте методkeySet().