java 8 перебирает список и сравнивает его с другим списком по индексу - PullRequest
0 голосов
/ 17 июня 2019

Я новичок в 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 Ответ

1 голос
/ 17 июня 2019

Полагаю, вы имеете в виду API Java Stream. Ваша основная проблема - сравнение двух списков.

Если порядок не имеет значения , потоковый 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
  );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...