Java8迭代列表并通过索引与另一个列表进行比较

Java8迭代列表并通过索引与另一个列表进行比较,java,java-8,Java,Java 8,我是Java8新手,正在尝试使用带有Java8语法的for循环。 我有两个列表-希望迭代第一个列表,并与另一个列表的特定索引进行比较。我可以用Java1.7语法轻松地做到这一点,如下所示 List<String> expectedValueList = dataTable.asList(String.class); String result = IOUtils.toString(myUtil.getResult().StandardCharsets.UTF_8.toString(

我是Java8新手,正在尝试使用带有Java8语法的for循环。 我有两个列表-希望迭代第一个列表,并与另一个列表的特定索引进行比较。我可以用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);
   }
List expectedValueList=dataTable.asList(String.class);
String result=IOUtils.toString(myUtil.getResult().StandardCharsets.UTF_8.toString());
列表行=Arrays.asList(result.split(“\n”);

对于(intii=1;ii我假设您指的是java流API。您的基本问题是比较两个列表

如果顺序不重要流api就很方便了,您不能这样做:

rows.stream().map(e -> e.split(",")[10]).allMatch(expectedValueList::contains);
但是如果顺序很重要,那么您所能做的就是稍微修改迭代并使用
IntStream.range
,但是您仍然可以使用
.get(index)


for循环的语法没有从java 7更改为8…您具体想更改什么?这两个版本之间没有什么不同。如果Oracle要在两个版本之间完全更改java语法,地球上的每一个开发人员都会将其击垮。java 8添加了流API作为替代,但是您的Java 7代码仍能正常工作。您的问题是,是否可以使用Java 8功能更优雅地表达它?如果功能是所有问题,您可以继续使用现有代码。谢谢!是的-我想知道是否可以使用Java 8功能以更优雅的方式表达它。我尝试使用流,但没有使用sure如何跟踪循环的索引。尝试将流与任何关心索引的内容一起使用可能比不使用流要尴尬得多。谢谢。我尝试过使用流,但不确定如何跟踪循环的索引。本质上,我想使用Java8功能重新编写代码
IntStream.range(1, rows.size())
  .allMatch(i -> 
    rows.get(i).split(",")[10].compareTo(expectedValueList.get(i)) == 0
  );