подскажите решение следующей задачи, имеется список
TreeList<String[]>mans
каким образом используя Striam API можно создать список
TreeList<String>name
куда поместить все первые элементы массивов входящих в список mans? Я понимаю что можно просто пройтись циклом, но ищу решение с помощью Stream API.
Для ArrayList(Суть та же):
ArrayList<String[]> mans = new ArrayList<>();
mans.add(new String[] {"1hi", "", "2hi", "", "3hi"});
mans.add(new String[] {"4hi", "5hi", "6hi"});
mans.stream()
.map(a -> {
StringBuilder toReturn = new StringBuilder("");
for(String string : a) {
if(!string.isEmpty()) {
toReturn.append(string.substring(0, 1));
}
}
return toReturn.toString();
})
.forEach(System.out::println);
Оптимизированный вариант:
mans.stream()
.map(a -> {
char[] firstChars = new char[a.length];
int countOfEmpty = 0;
for(int i = 0; i < firstChars.length - countOfEmpty; i++) {
if(!a[i + countOfEmpty].isEmpty()) {
firstChars[i] = a[i + countOfEmpty].charAt(0);
} else {
i--;
countOfEmpty++;
}
}
return new String(firstChars).substring(0, firstChars.length - countOfEmpty);
})
.forEach(System.out::println);
Оба выводят следующее:
123
456
А собрать в один список вы можете заменив forEach() на collect(), в котором можно преобразовать поток строк в нужную вам коллекцию
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Реализую небольшой maven-проект с выводом данных из БДПроект основан на MVC архитектуре и суть его такова: на главной странице (index
приложение должно сохранять файл с логином и паролем, затем при открытии приложения или при вводе данных проверять пароль, если он совпадает...