java 8迭代列表并按索引与另一个列表进行比较

标签 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 语法执行上述操作,但我迷路了。 谢谢

最佳答案

我假设您指的是 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
  );

关于java 8迭代列表并按索引与另一个列表进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56638194/

相关文章:

java - Java 8 流可以成对处理吗

java - 检查字符串是否只包含某些字符

java - 为什么在解析第一个字符串数组中的数据时会抛出异常,但在跳过第一个数组时不会抛出异常?

java - 从 Arraylist 中提取不同字符串的更快方法

java - 可选字段流返回值

java - 使用 Java 8 转换字符串中 List<MutablePair> 的迭代

java - 并发设置界限

java - 是否有有助于构建命令行应用程序的良好 Java 库?

java - 请求参数的存在应评估为真

java - 使用方法引用