Split TreeMap , Список <>> в два массива ArrayList

У меня есть два ArrayLists:

List<string> names = new ArrayList<string>(10);
List<drawable> drawables = new ArrayList<drawable>(10);
</drawable></drawable></string></string>

который я хочу сортировать по алфавиту.

Для этого я создал TreeMap:

Map<list<string>, List<drawable>> myMapToSort = new TreeMap<list<string>, List<drawable>>();
myMapToSort.put(names, drawables);
</drawable></list<string></drawable></list<string>

Первые два вопроса

Отображается ли теперь карта в lexicographical порядке? Или мне нужно сделать что-то еще?

После того, как я их отсортировал, если они еще есть, я хочу разбить их снова на List и List. И я пробовал вот так:

List<string> sortedNames = new ArrayList<string>(myMapToSort.keySet());
</string></string>

Конечно, это не работает, потому что myMapToSort.keySet() возвращает Set а не List. И List не имеет Constructor для Set.

Итак, как я могу это сделать и что я недопонимаю?

Любая помощь приветствуется. Заранее спасибо!

2 ответа

Я понял это самостоятельно.

Ключ должен был создать TreeMap с не двумя списками, а двумя отдельными объектами:

Map<string, drawable=""> myTreeMap = new TreeMap<string, drawable="">;
</string,></string,>

Затем добавьте Items из Arraylists один за другим на карту:

for(int i = 0; i
<p> Теперь Карта автоматически сортируется по <code>Lexicographical по отношению к Drawables. Это означает, что Names and Drawables are sorted in lexicographical order.

Если вы хотите получить keys и values и поместить их в отдельные ArrayLists просто введите:

List <string> mySortedNames = new ArrayList<string>(myTreeMap.keySet());
List <drawables> mySortedDrawables = new ArrayList<drawables>(myTreeMap.values());
</drawables></drawables></string></string>

Это. ;)


Вы можете использовать SortedSet (или SortedList) для сортировки элементов. Элементы упорядочиваются с использованием их естественного упорядочения или с помощью компаратора, обычно предоставляемого во время создания отсортированного набора.

Для разбиения карты в двух списках:

List<string> sortedNames = new ArrayList<string>();
List<drawable> drawables = new ArrayList<drawable>();

for (Map.Entry<string, drawable=""> entry : map.entrySet())
{
 sortedNames.add(entry.getKey()
 drawables.add(entry.getValue());
}
</string,></drawable></drawable></string></string>

licensed under cc by-sa 3.0 with attribution.