Я работаю над проблемой, связанной с обработкой перекрывающихся пар из потока.
например, рассмотрим список → [«лев», «лиса», «заяц», «морковь»] . Таким образом, вывод будет
лев ест лису
лиса ест зайца
заяц ест морковь.
Элементы вывода всегда на единицу меньше, чем в исходном списке . Сейчас я использую java 8. вот мой код
Код
static <T,R> Function <T, Stream<R>> pairMap(BiFunction<T,T,R> mapper)
{
return new Function<> () {
T previous = null;
boolean hasPrevious;
public Stream<R> apply(T t)
{
Stream<R> result;
if(!hasPrevious)
{
hasPrevious = true;
result = Stream.empty();
}
else
{
result = Stream.of(mapper.apply(previous, t));
}
previous = t;
return result;
}
};
}
static <T> Stream<T> getAdjecentOverlappingStream(List<T> list)
{
return list.stream().flatMap(pairMap((a,b) -> a+" eats "+ b));
}
Метод вызова
//consider the class name I am working with is StreamUtils.
StreamUtils.getAdjecentOverlappingStream(Arrays.asList("lion","fox","hare","carrot"))
.forEach(System.out::println);;
Но этот код дает мне ошибку как ошибка: невозможно определить аргументы типа для функции
Показать полную ошибку.
Ошибка
StreamLecture.java:83: error: cannot infer type arguments for Function<T,R>
return new Function<> () {
^
reason: cannot use '<>' with anonymous inner classes
where T,R are type-variables:
T extends Object declared in interface Function
R extends Object declared in interface Function
StreamLecture.java:106: error: incompatible types: inference variable R#1 has incompatible bounds
return list.stream().flatMap(pairMap((a,b) -> a+" eats "+ b));
^
equality constraints: T#2
lower bounds: String,R#2
where R#1,T#1,T#2,R#2,T#3 are type-variables:
R#1 extends Object declared in method <R#1>flatMap(Function<? super T#1,? extends Stream<? extends R#1>>)
T#1 extends Object declared in interface Stream
T#2 extends Object declared in method <T#2>getAdjecentOverlappingStream(List<T#2>)
R#2 extends Object declared in method <T#3,R#2>pairMap(BiFunction<T#3,T#3,R#2>)
T#3 extends Object declared in method <T#3,R#2>pairMap(BiFunction<T#3,T#3,R#2>)
Note: StreamLecture.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors
Пожалуйста, помогите мне исправить эту ошибку. спасибо ✌