在我的应用程序中,我有一个列表名称。我希望根据索引值将其转换为地图。例如
List<String> names = new ArrayList<String>();
names.add("Pratik");
names.add("Pratik");
names.add("Ram");
names.add("Varun");
你能帮我一些guava / java api方法,它可以帮助我得到一个地图,其中键是索引,值是名称,即使有重复的值?如果名称中有两个“Pratik”字符串。地图应该是这样的
0 - &gt; “Pratik”,1-&gt;“Pratik”,2-&gt;“Ram”,3-&gt;“Varun”
答案 0 :(得分:8)
我认为你在这里不需要番石榴:
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);
}
});
顺便说一句,我不明白你为什么要这样做。