2015-10-13 16 views
-1

у меня есть это дерево карта:Java TreeMap вернуть ключевые позиции

Map teamNameAndLeague = new TreeMap(); 

teamNameAndLeague.put("team1", "name1"); 
teamNameAndLeague.put("team2", "name2"); 
teamNameAndLeague.put("team3", "name3"); 

Как я искать ключ и вернуть индекс этого ключа Пример:

search for key: "team1" in teamNameAndLeague, Returns index: 1 

у меня есть это:

int indexWin = new ArrayList<String>(teamNameAndLeague.values()).indexOf("name2") + 1; 

That returns: 2 

он возвращает индекс для этого ключа, но для поиска по значению ключа. Как я могу сделать что-то подобное, но вместо этого искать ключ

+0

Он возвращает индекс на основе ключа ... разве это не поиск ключа? – redFIVE

+0

Ваш индекс зависит от порядка вставки или в соответствии с TreeMap? Я не думаю, что есть какой-либо индекс в TreeMap –

ответ

0

Почему бы не сделать то же самое, но использовать key для получения value?

new ArrayList<String>(teamNameAndLeague.values()).indexOf(teamNameAndLeague.get("team2")) + 1 

Это покажет вам порядок вставки, но не дает вам index. Map не используется index

0

TreeMap не использует индекс; это дерево, а не линейная последовательность. Если вы хотите наложить заказ, вы можете сделать это.

Для этого вы должны предоставить Компаратор для ключей (по умолчанию используется компаратор сравнения, если хотите), сортируйте список в массив и затем проиндексируйте массив, как вы уже разместили с помощью значения. Обратите внимание, однако, что это игнорирует древовидную структуру. См. Пример в http://java2novice.com/java-collections-and-util/treemap/basic-comparator/

Также обратите внимание на список ссылок в нижней части страницы: они проведут вас через основные операции TreeMap.

Другим способом является использование объекта «set» из ключей, teamNameAndLeague.keySet; это тоже игнорирует древовидную структуру.

Смежные вопросы