guava: преобразовать список в карту с индексом в качестве ключа
В моем приложении у меня есть список имен. Я хочу преобразовать это в карту на основе значения индекса. Например
List<String> names = new ArrayList<String>();
names.add("Pratik");
names.add("Pratik");
names.add("Ram");
names.add("Varun");
Можете ли вы помочь мне с каким-либо методом API-интерфейса guava/java, который может помочь мне получить карту, где ключом является индекс, а значением является имя, даже если есть повторяющиеся значения? ТАК если есть две строки "Pratik" в именах. Карта должна быть такой
0 -> "Пратик", 1->"Пратик",2->"Баран",3->"Варун"
1 ответ
Решение
Я думаю, что вам не нужна гуава здесь:
Map<Integer, String> map = new HashMap<Integer, String>();
int i = 0;
for (String name : names) {
map.put(i++, name);
}
System.out.println(map);
печатает:
{0=Pratik, 1=Pratik, 2=Ram, 3=Varun}
Если вам абсолютно нужен способ сделать это с помощью Guava, вы можете сделать это (но я бы порекомендовал способ JDK, чтобы избежать ненужной сложности):
Maps.asMap(
ContiguousSet.create(Range.closedOpen(0, names.size()), DiscreteDomain.integers()),
new Function<Integer, String>() {
@Override
public String apply(Integer input) {
return names.get(input);
}
});
Кстати, я не понимаю, зачем тебе это делать.