Использование Java Streams с дженерикамиJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Использование Java Streams с дженериками

Сообщение Anonymous »

У меня есть класс ниже:

Код: Выделить всё

@Data
public class PagedSchoolDto {
private final Integer count;
private final Map content;
private final String pagingState;
private final Boolean hasNext;

public PagedSchoolDto(final Slice slice) {
this.content = slice.getContent().stream().collect(
Collectors.groupingBy(School::getId, () -> new TreeMap(new UUIDComparator()), Collectors.toList()));
this.count = slice.getContent().size();
this.hasNext = slice.hasNext();
this.pagingState = getPagingState(slice);
}

@Nullable
private static String getPagingState(final Slice slice) {
if (slice.hasNext()) {
CassandraPageRequest pageRequest = (CassandraPageRequest) slice.nextPageable();
return pageRequest.getPagingState().toString();
} else {
return null;
}
}
}
Теперь я хочу сделать свой код универсальным, чтобы я мог использовать этот класс для других типов объектов, как показано ниже:

Код: Выделить всё

@Data
public class PagedDto {
private final Integer count;
private final Map content;
private final String pagingState;
private final Boolean hasNext;

public PagedDto(final Slice slice) {
this.content = slice.getContent().stream().collect(
Collectors.groupingBy(::getId, () -> new TreeMap(new UUIDComparator()), Collectors.toList()));
this.count = slice.getContent().size();
this.hasNext = slice.hasNext();
this.pagingState = getPagingState(slice);
}

@Nullable
private static  String getPagingState(final Slice slice) {
if (slice.hasNext()) {
CassandraPageRequest pageRequest = (CassandraPageRequest) slice.nextPageable();
return pageRequest.getPagingState().toString();
} else {
return null;
}
}

}
Все мои классы имеют свойство ID, которое имеет тип UUID, поэтому компаратор должен нормально работать со всеми универсальными типами. Проблема в том, что я не уверен, как написать функцию и код поставщика Collectors.groupingBy, поскольку второй фрагмент выдает ошибку компиляции.

Подробнее здесь: https://stackoverflow.com/questions/692 ... h-generics
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»