我是 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/