Тут в консоль выводятся слова длинна которых больше 4-ёх.
Как можно изменить условие,чтобы выводилась слово с максимальной длинной ?
// main
import java.util.Arrays;
public class Main {
public static void main(String... args) {
Dataset.of(Arrays.asList("шла", "саша", "по", "шоссе"))
.union(Arrays.asList("и", "сосала", "сушку"))
.filter(s -> s.length() > 4)
.map(s -> s + ", length=" + s.length())
.forEach(System.out::println);
}}
//Dataset
public class Dataset<T> {
private final Generator<T> generator;
private Dataset(Generator<T> generator) {
this.generator = generator;
}
public void forEach(Consumer<T> consumer) {
generator.generate(value -> consumer.accept(value));
}
public Dataset<T> union(Collection<T> collection) {
return new Dataset<>(generatorContext -> {
generator.generate(generatorContext);
collection.forEach(item -> generatorContext.emit(item));
});
}
public Dataset<T> filter(Predicate<T> predicate) {
return new Dataset<>(generatorContext -> generator.generate(value -> {
if (predicate.test(value)) {
generatorContext.emit(value);
}
}));
}
public <R> Dataset<R> map(Function<T, R> function) {
return new Dataset<>(generatorContext -> generator.generate(
value -> generatorContext.emit(function.apply(value))
));
}
public static <T> Dataset<T> of(Collection<T> collection) {
return new Dataset<>(generatorContext ->
collection.forEach(item -> generatorContext.emit(item))
);
}
public static <T> Dataset<T> dataset(Generator<T> generator) {
return new Dataset<>(generator);
}
}
Dataset.of(Arrays.asList("шла", "саша", "по", "шоссе"))
.union(Arrays.asList("и", "сосала", "сушку"))
.max(Comparator.comparingInt(String::length))
.map(s -> s + ", length=" + s.length())
.ifPresent(System.out::println);
Что касается поиска самой длинной строки в стриме - есть встроенная функция max
:
String max = Stream.of("шла", "саша", "по", "шоссе", "и", "сосала", "сушку")
.max( (a, s) -> a.length() - s.length() ).get();
System.out.println("max = " + max);
так же можно использовать reduce
(свертку):
String max = Stream.of("шла", "саша", "по", "шоссе", "и", "сосала", "сушку")
.reduce("", (a, s) -> s.length() > a.length() ? s : a);
System.out.println("max = " + max);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я установил джарник с нужной мне библиотекой в maven local следующей командой:
Допустим у меня есть Два объекта : Пенал и ручка в пенале может содержаться большое количество ручек представим бд с двумя таблицами: Код: