как сжать несколько foreach в один для каждого? - PullRequest
2 голосов
/ 27 сентября 2019

Я хочу объединить каждый из этих массивов, а затем просто перебрать итоговую коллекцию.

        String[] type = {"school", "home"};
        String[] place = {"tokyo ", " New York"};
        String[] date = {"Sep", "Feb"};


        for(String name: type) {
            Assert.assertFalse(isValid(name));
        }
        for(String name: place) {
            Assert.assertFalse(isValid(name));
        }
        for(String name: date) {
            Assert.assertFalse(isValid(name));
        }

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Не обязательно для каждого, кого вы показали, но, возможно, вас заинтересует что-то вроде:

Stream.of(type, place, date) //Stream<String[]> example [ [a,b], [c,d] ]
      .flatMap(Stream::of)   //Stream<String>   example [ a, b, c, d ]
      .forEach(name -> Assert.assertFalse(isValid(name));

, которое похоже на

for (String[] arr : Arrays.asList(type,place,date)){
    for(String name : arr){
        Assert.assertFalse(isValid(name)
    }
}
0 голосов
/ 27 сентября 2019
String[] type = {"school", "home"};
String[] place = {"tokyo ", " New York"};
String[] date = {"Sep", "Feb"};

        Arrays.asList(type, place, date).forEach(item -> {
            for (int i = 0; i < item.length; i++) {
                Assert.assertFalse(isValid(item[i]));
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...