Assign value from `forEach` without using element array
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;
java
add a comment |
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;
java
Just use normal for/each loops:for (User user : usersModel)
– shmosel
Nov 14 '18 at 23:59
User widgetModel = (((AuthManagerRow) getWidget(i)).getModel();
- save a few lines
– Scary Wombat
Nov 15 '18 at 0:01
IntStream.of(int)
returns a stream with a single element. Did you actually mean to useIntStream.range(0, getWidgetCount())
?
– Ilmari Karonen
Nov 15 '18 at 0:18
add a comment |
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;
java
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;
java
java
asked Nov 14 '18 at 23:53
xybrekxybrek
12.5k48195373
12.5k48195373
Just use normal for/each loops:for (User user : usersModel)
– shmosel
Nov 14 '18 at 23:59
User widgetModel = (((AuthManagerRow) getWidget(i)).getModel();
- save a few lines
– Scary Wombat
Nov 15 '18 at 0:01
IntStream.of(int)
returns a stream with a single element. Did you actually mean to useIntStream.range(0, getWidgetCount())
?
– Ilmari Karonen
Nov 15 '18 at 0:18
add a comment |
Just use normal for/each loops:for (User user : usersModel)
– shmosel
Nov 14 '18 at 23:59
User widgetModel = (((AuthManagerRow) getWidget(i)).getModel();
- save a few lines
– Scary Wombat
Nov 15 '18 at 0:01
IntStream.of(int)
returns a stream with a single element. Did you actually mean to useIntStream.range(0, getWidgetCount())
?
– Ilmari Karonen
Nov 15 '18 at 0:18
Just use normal for/each loops:
for (User user : usersModel)
– shmosel
Nov 14 '18 at 23:59
Just use normal for/each loops:
for (User user : usersModel)
– shmosel
Nov 14 '18 at 23:59
User widgetModel = (((AuthManagerRow) getWidget(i)).getModel();
- save a few lines– Scary Wombat
Nov 15 '18 at 0:01
User widgetModel = (((AuthManagerRow) getWidget(i)).getModel();
- save a few lines– Scary Wombat
Nov 15 '18 at 0:01
IntStream.of(int)
returns a stream with a single element. Did you actually mean to use IntStream.range(0, getWidgetCount())
?– Ilmari Karonen
Nov 15 '18 at 0:18
IntStream.of(int)
returns a stream with a single element. Did you actually mean to use IntStream.range(0, getWidgetCount())
?– Ilmari Karonen
Nov 15 '18 at 0:18
add a comment |
1 Answer
1
active
oldest
votes
Map<Integer, User> users = new HashMap<>();
IntStream.of(getWidgetCount())
.mapToObject(i -> ((AuthManagerRow) getWidget(i)).getModel())
.forEach(model -> users.putIfAbsent(model.getObjectId(), model));
return new ArrayList<>(users.values());
Assuming User.getObjectId()
returns Integer
.
because only the firstUser
for the givenObjectId
should be returned
– Adam Siemion
Nov 15 '18 at 0:08
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53310516%2fassign-value-from-foreach-without-using-element-array%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Map<Integer, User> users = new HashMap<>();
IntStream.of(getWidgetCount())
.mapToObject(i -> ((AuthManagerRow) getWidget(i)).getModel())
.forEach(model -> users.putIfAbsent(model.getObjectId(), model));
return new ArrayList<>(users.values());
Assuming User.getObjectId()
returns Integer
.
because only the firstUser
for the givenObjectId
should be returned
– Adam Siemion
Nov 15 '18 at 0:08
add a comment |
Map<Integer, User> users = new HashMap<>();
IntStream.of(getWidgetCount())
.mapToObject(i -> ((AuthManagerRow) getWidget(i)).getModel())
.forEach(model -> users.putIfAbsent(model.getObjectId(), model));
return new ArrayList<>(users.values());
Assuming User.getObjectId()
returns Integer
.
because only the firstUser
for the givenObjectId
should be returned
– Adam Siemion
Nov 15 '18 at 0:08
add a comment |
Map<Integer, User> users = new HashMap<>();
IntStream.of(getWidgetCount())
.mapToObject(i -> ((AuthManagerRow) getWidget(i)).getModel())
.forEach(model -> users.putIfAbsent(model.getObjectId(), model));
return new ArrayList<>(users.values());
Assuming User.getObjectId()
returns Integer
.
Map<Integer, User> users = new HashMap<>();
IntStream.of(getWidgetCount())
.mapToObject(i -> ((AuthManagerRow) getWidget(i)).getModel())
.forEach(model -> users.putIfAbsent(model.getObjectId(), model));
return new ArrayList<>(users.values());
Assuming User.getObjectId()
returns Integer
.
edited Nov 15 '18 at 0:13
answered Nov 15 '18 at 0:05
Adam SiemionAdam Siemion
12.1k13371
12.1k13371
because only the firstUser
for the givenObjectId
should be returned
– Adam Siemion
Nov 15 '18 at 0:08
add a comment |
because only the firstUser
for the givenObjectId
should be returned
– Adam Siemion
Nov 15 '18 at 0:08
because only the first
User
for the given ObjectId
should be returned– Adam Siemion
Nov 15 '18 at 0:08
because only the first
User
for the given ObjectId
should be returned– Adam Siemion
Nov 15 '18 at 0:08
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53310516%2fassign-value-from-foreach-without-using-element-array%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Just use normal for/each loops:
for (User user : usersModel)
– shmosel
Nov 14 '18 at 23:59
User widgetModel = (((AuthManagerRow) getWidget(i)).getModel();
- save a few lines– Scary Wombat
Nov 15 '18 at 0:01
IntStream.of(int)
returns a stream with a single element. Did you actually mean to useIntStream.range(0, getWidgetCount())
?– Ilmari Karonen
Nov 15 '18 at 0:18