3

在我的应用程序中,我有一个列表名称。我希望将其转换为基于索引值的地图。例如

List<String> names = new ArrayList<String>();
names.add("Pratik");
names.add("Pratik");
names.add("Ram");
names.add("Varun");

你能帮我一些番石榴/java api方法,它可以帮助我得到一个地图,其中键是索引,值是名称,即使有重复的值?所以如果名称中有两个“Pratik”字符串。地图应该是这样的

0 ->“Pratik”,1->“Pratik”,2->“Ram”,3->“Varun”

4

1 回答 1

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);
              }
          });

顺便说一句,我不明白你为什么要这样做。

于 2013-10-02T12:52:39.050 回答