【问题标题】:I need to write the following block of code using Java Stream. Can someone please help me out? I'm not familiar with java streams [closed]我需要使用 Java Stream 编写以下代码块。有人可以帮我吗?我不熟悉java流[关闭]
【发布时间】:2021-06-06 01:38:09
【问题描述】:

下面的代码基本上忽略了字符串“header”。我需要使用 java 流编写相同的代码

List<String> dataitem1=new ArrayList<>();
dataitem1.add("header");
dataitem1.add("B");
dataitem1.add("C");
List<String> dataitem2=new ArrayList<>();
dataitem2.add("header");
dataitem2.add("B");
dataitem2.add("C");
List<List<String>> data=Arrays.asList(dataitem1,dataitem2);
String x=null;
for(int i=0;i<data.size();i++){
    for(int j=0;j<data.get(i).size();j++){
                if((i==0 && j==0) || data.get(i).get(j).equals(x)){
                    x=data.get(i).get(j);
                    continue;
                }
                System.out.println(data.get(i).get(j));
            }
}

【问题讨论】:

  • 更正了我的代码

标签: java for-loop java-stream


【解决方案1】:

使用filter 方法。

list.stream()
    .flatMap(List::stream)
    .filter(Predicate.not(str -> str.equals("header")))
    .collect(Collectors.toList());

为了将字符串“header”替换为另一个而不是忽略它,您需要将filter 语句替换为

.map(str -> (str.equals("header") ? "anotherstring" : str))

【讨论】:

  • 这是否适用于字符串列表
  • 我想最终将 "B","C","B","C" 存储在列表中
  • 收到错误 - 无法解析谓词中的方法收集
  • @ChristianAlderson 一个) 不见了。更新了答案
  • 接受了答案。我还有一个疑问,你能帮我解决这个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
  • 1970-01-01
  • 2016-03-08
  • 2022-06-14
  • 1970-01-01
相关资源
最近更新 更多