Fügen Sie mit Java -Streams das Ergebnis des Methodenaufrufs zu einer anderen Sammlung hinzu
Posted: 11 Feb 2025, 22:43
Ich habe eine ArrayList (ohne Diamantbetreiber), die Objekte vom Typ userHelper speichert. Ich möchte den Iteratorcode in Stream umschreiben, aber ich bin mir nicht sicher, wie ich das Ergebnis einer Methodenaufruf zur Sammlung hinzufügen soll. Hier ist mein Code: < /p>
Die GetNewadMindTobyConsolepermission Methode ist eine private Methode in SomeService Klasse. Stream: < /p>
Code: Select all
List result = new ArrayList();
ArrayList userHelperAL = getUsersToAdd(start, num, usernameFilter, fullnameFilter);
for (Iterator userIt = userHelperAL.iterator(); userIt.hasNext();) {
// get the user
UserHelper userHelper = (UserHelper) userIt.next();
// get the user's permissions
AdminDto userPermissionDto = getNewAdminDtoByConsolePermissions(userHelper);
result.add(userPermissionDto);
}
Code: Select all
userHelperAL.stream()
.filter(obj -> obj instanceof UserHelper)
.map(obj -> (UserHelper) obj)
.map(SomeService::getNewAdminDtoByConsolePermissions)
.collect(Collectors.toCollection(() -> result));
< /code>
Der Fehler, den ich hier erhalte Hier.
Hier ist die GetNewadMindTobyConsolepermissions < /code> Methode: < /p>
private AdminDto getNewAdminDtoByConsolePermissions(UserHelper userHelper) {
long consolePermissions = userHelper.getConsolePermissions();
// Add the user's permissions to the map
Map permissionMap = getUserAdminPermissionMap();
int index = 0;
for (String key : permissionMap.keySet()) {
// the value is hidden for legacy purposes
permissionMap.put(key, someVALUE);
++index;
}
// build the dto
AdminDto resultDto = getAdminUserManagementPermissions(permissionMap);
return resultDto;
}