java - 使用 java 流将 String[] str = {"a","b","c","d","e","f"} 映射为 {a=b, c=d, e=f}

标签 java java-8 java-stream

我有下面的代码来实现需求,但无法使用stream解决,我不知道如何在管道中增加i

String[] str = {"a","b","c","d","e","f"};
    Map<String, String> strMap = new HashMap<>();
    int i = 0;
    while(i< str.length && i +1 < str.length) {
        strMap.put(str[i],str[i+1]);
        i +=2;          
    } 

最佳答案

您无法使用简单的 str 流来完成此操作,但您可以使用索引流来模拟循环:

Map<String, String> strMap = IntStream.range(0, str.length - 1)
        .filter(i -> i % 2 == 0)
        .boxed()
        .collect(Collectors.toMap(i -> str[i], i -> str[i + 1]));

关于java - 使用 java 流将 String[] str = {"a","b","c","d","e","f"} 映射为 {a=b, c=d, e=f},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46780944/

相关文章:

java - 正则表达式-如何在第一次出现字符时停止

java - IntelliJ Idea - 在 Mac 上安装 JDK 1.8

java - 引用特定类型的任意对象的实例方法...不适用于自定义类?

java - 如何在java中获取日期与之前的时间

java - 为什么 Java 在重载方法时会有这样的行为?

java - 在 setter 中使用 switch 语句

java - 在java中将部分 HashMap 重复项合并到新的数组列表

java - 在Java中读取未知长度的Gzip文件

java - 将方法应用于流

java - 将 Spring Boot 项目从 JDK 8 升级到 JDK 11