Вы можете просто использовать это:
List<CustomDataBean> result = origData.stream()
.collect(Collectors.groupingBy(DataBean::getEmployeeId))
.entrySet().stream()
.map(e -> new CustomDataBean(
e.getKey(),
e.getValue().stream().map(DataBean::getOrg).collect(Collectors.toList()),
e.getValue().get(0).getComments()))
.collect(Collectors.toList());
Это сопоставляет сгруппированные результаты с вашим CustomDataBean
объектом.
Для ввода:
List<DataBean> origData = Arrays.asList(
new DataBean(1, "a", "c"),
new DataBean(1, "b", "c"),
new DataBean(1, "c", "c"),
new DataBean(2, "a", "d"),
new DataBean(2, "c", "d")
);
Theрезультат будет таким:
CustomDataBean[employeeId=1, orgs=[a, b, c], comments='c']
CustomDataBean[employeeId=2, orgs=[a, c], comments='d']