Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java8中,从字符串列表中生成自然id作为键和字符串作为值的映射_Java_Java 8 - Fatal编程技术网

在Java8中,从字符串列表中生成自然id作为键和字符串作为值的映射

在Java8中,从字符串列表中生成自然id作为键和字符串作为值的映射,java,java-8,Java,Java 8,假设我有一个字符串列表 List<String> fourthList = Arrays.asList("abc","def","ghi"); List fourthList=Arrays.asList(“abc”、“def”、“ghi”); 我想把它转换成Map,比如{1=abc,2=def,3=ghi} java中的收集器不允许我这样做,因为它只接受keyMapper中的方法。根据Per的评论(推荐),您可以使用: IntStream.rangeClosed(0, list.

假设我有一个字符串列表

List<String> fourthList = Arrays.asList("abc","def","ghi");
List fourthList=Arrays.asList(“abc”、“def”、“ghi”);
我想把它转换成Map,比如{1=abc,2=def,3=ghi}

java中的收集器不允许我这样做,因为它只接受keyMapper中的方法。

根据Per的评论(推荐),您可以使用:

IntStream.rangeClosed(0, list.size() - 1) 
         .mapToObj(i -> new AbstractMap.SimpleEntry<Integer, String>(i + 1, list.get(i))) 
         .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
输出:

1  abc
2  def
3  ghi

今年早些时候我也做过类似的映射实践,你可以看看:

问题是你使用了静态变量
k
使得这个非线程安全,还有许多其他缺点。线程安全现在不是我关心的问题,不管怎样,这是一个好问题。感谢Vishwa,它成功了,然而,我对toMap签名有疑问,因为它接受函数作为参数,但这里它接受变量here@RahulPyasi,您是对的
toMap
签名接受函数。Java lambda表达式是Java进入函数式编程的第一步。因此,Java lambda表达式是一个不属于任何类的函数。@VishwaRatna这是一个清楚的解释。谢谢你的信息!这个问题以前没人问过,或者我可能还没找到。我能够找到convert list to map,但是在它提到的所有用户类型变量问题中。我只关心字符串类型的列表。map collect=IntStream.rangeClosed(0,fourthList.size()-1)。boxed().collect(Collectors.toMap(i->i+1,fourthList::get));系统输出打印项次(收集);
AtomicInteger index = new AtomicInteger(0);
Map<Integer, String> map = list.stream()
            .collect(Collectors.toMap(s -> index.incrementAndGet(), Function.identity()));
map.forEach((l, m) -> System.out.println(l + "  " + m));
1  abc
2  def
3  ghi