Java 8遍历列表并按索引与另一个列表进行比较

时间:2019-06-17 20:03:44

标签: java java-8

我是Java 8的新手,正在尝试将for循环与Java 8语法一起使用。 我有2个列表-想遍历第一个列表并与另一个列表的特定索引进行比较。我可以使用Java1.7语法轻松地做到这一点,如下所示。

List<String> expectedValueList = dataTable.asList(String.class);
String result  = IOUtils.toString(myUtil.getResult().StandardCharsets.UTF_8.toString());
List<String> rows = Arrays.asList(result.split("\n");
  for(int ii=1;ii<rows.size();ii++){ //Skipping header value
      String row = rows.get(ii);
      String[] strToks = row.split(",");
      String actualVal = strToks[10];
      String expectedVal = expectedValueList[ii];
      Assert.assertEquals(expectedVal,actualVal);
   }

我想使用java8语法完成上述操作,但现在已经迷路了。 谢谢

1 个答案:

答案 0 :(得分:1)

我假设您的意思是java Stream API。您的基本问题是比较两个列表。

如果 顺序无关紧要 ,则流api会派上用场,您不能这样:

rows.stream().map(e -> e.split(",")[10]).allMatch(expectedValueList::contains);

但是如果 顺序很重要 ,您所能做的就是稍微修改迭代并使用IntStream.range,但是您仍然可以访问元素.get(index)

IntStream.range(1, rows.size())
  .allMatch(i -> 
    rows.get(i).split(",")[10].compareTo(expectedValueList.get(i)) == 0
  );