我是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语法完成上述操作,但现在已经迷路了。 谢谢
答案 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
);