What's the best way to minimize this code and also remove the need for a element array to assign the variable with the value from inside the forEach:
@Override
public List<User> getModel() {
List<User> usersModel = new LinkedList<User>();
IntStream.of(getWidgetCount()).forEach(i -> {
Widget widget = getWidget(i);
AuthManagerRow row = (AuthManagerRow) widget;
User widgetModel = row.getModel();
final Boolean[] contains = {false};
usersModel.forEach(user -> {
if(user.getObjectId().equals(widgetModel.getObjectId())) {
contains[0] = true;
}
});
if(!contains[0]) {
usersModel.add(widgetModel);
}
});
return usersModel;
}
for (User user : usersModel)User widgetModel = (((AuthManagerRow) getWidget(i)).getModel();- save a few linesIntStream.of(int)returns a stream with a single element. Did you actually mean to useIntStream.range(0, getWidgetCount())?