Java 8将<t>列入Map <t,(index)=“”>

时间:2016-10-29 12:45:59

标签: java lambda java-8 java-stream

是否有方便的Java8流API方式转换自List<T> to Map<T, (index)>,如下例所示:

    List<Character> charList = "ABCDE".chars().mapToObj(e->(char)e).collect(Collectors.toList());

    Map<Character, Integer> map = new HashMap<>();
    for (int i = 0; i < charList.size(); i++) {
        map.put(charList.get(i), i);
    }
  

map = {A = 0,B = 1,C = 2,D = 3,E = 4}

1 个答案:

答案 0 :(得分:4)

你可以使用以下令人讨厌的技巧,但它不优雅,在链表上根本没有效率:

List<String> list = Arrays.asList("a", "b", "c");
Map<String, Integer> result = 
    IntStream.range(0, list.size())
             .boxed()
             .collect(Collectors.toMap(list::get, Function.identity()));

它比简单的for循环IMO更不易读。所以我会坚持这一点。