Как я могу достичь логики ниже, используя java8?
List<GenericKeyValueHolder<Integer>> r = searchAttributes.rowMap().forEach((id, value) -> { new GenericKeyValueHolder<T>(id, value); });
Поток через entrySet из Map, сопоставьте каждую запись с вашим целевым типом и соберите List:
entrySet
Map
List
List<GenericKeyValueHolder<Integer>> r = searchAttributes.rowMap() .entrySet() .stream() .map(e -> new GenericKeyValueHolder<>(e.getKey(), e.getValue())) .collect(Collectors.toList());