Use Collectors.groupingby to create a map to a set
I know how to create a Map<T, List<U>>
, using Collectors.groupingBy
:
Map<Key, List<Item>> listMap = items.stream().collect(Collectors.groupingBy(s->s.key));
How would I modify that code to create Map<Key, Set<Item>>
? Or can I not do it using stream
and so have to create it manually using a for loop etc.?
java set java-stream grouping
add a comment |
I know how to create a Map<T, List<U>>
, using Collectors.groupingBy
:
Map<Key, List<Item>> listMap = items.stream().collect(Collectors.groupingBy(s->s.key));
How would I modify that code to create Map<Key, Set<Item>>
? Or can I not do it using stream
and so have to create it manually using a for loop etc.?
java set java-stream grouping
add a comment |
I know how to create a Map<T, List<U>>
, using Collectors.groupingBy
:
Map<Key, List<Item>> listMap = items.stream().collect(Collectors.groupingBy(s->s.key));
How would I modify that code to create Map<Key, Set<Item>>
? Or can I not do it using stream
and so have to create it manually using a for loop etc.?
java set java-stream grouping
I know how to create a Map<T, List<U>>
, using Collectors.groupingBy
:
Map<Key, List<Item>> listMap = items.stream().collect(Collectors.groupingBy(s->s.key));
How would I modify that code to create Map<Key, Set<Item>>
? Or can I not do it using stream
and so have to create it manually using a for loop etc.?
java set java-stream grouping
java set java-stream grouping
asked yesterday
simonalexander2005simonalexander2005
1,93842957
1,93842957
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
Use Collectors.toSet()
as a downstream in groupingBy:
Map<Key, Set<Item>> map = items.stream()
.collect(Collectors.groupingBy(s -> s.key, Collectors.toSet()));
add a comment |
You have to use a downstream collector like this:
Map<Key, Set<Item>> listMap = items.stream()
.collect(Collectors.groupingBy(s -> s.key, Collectors.toSet()));
add a comment |
I also like the non-stream solution sometimes:
Map<Key, Set<Item>> yourMap = new HashMap<>();
items.forEach(x -> yourMap.computeIfAbsent(x.getKey(), ignoreMe -> new HashSet<>()).add(x));
If you really wanted you could exercise to do the same via compute/merge
methods too
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%2f54863316%2fuse-collectors-groupingby-to-create-a-map-to-a-set%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Use Collectors.toSet()
as a downstream in groupingBy:
Map<Key, Set<Item>> map = items.stream()
.collect(Collectors.groupingBy(s -> s.key, Collectors.toSet()));
add a comment |
Use Collectors.toSet()
as a downstream in groupingBy:
Map<Key, Set<Item>> map = items.stream()
.collect(Collectors.groupingBy(s -> s.key, Collectors.toSet()));
add a comment |
Use Collectors.toSet()
as a downstream in groupingBy:
Map<Key, Set<Item>> map = items.stream()
.collect(Collectors.groupingBy(s -> s.key, Collectors.toSet()));
Use Collectors.toSet()
as a downstream in groupingBy:
Map<Key, Set<Item>> map = items.stream()
.collect(Collectors.groupingBy(s -> s.key, Collectors.toSet()));
edited yesterday
answered yesterday
RuslanRuslan
2,451822
2,451822
add a comment |
add a comment |
You have to use a downstream collector like this:
Map<Key, Set<Item>> listMap = items.stream()
.collect(Collectors.groupingBy(s -> s.key, Collectors.toSet()));
add a comment |
You have to use a downstream collector like this:
Map<Key, Set<Item>> listMap = items.stream()
.collect(Collectors.groupingBy(s -> s.key, Collectors.toSet()));
add a comment |
You have to use a downstream collector like this:
Map<Key, Set<Item>> listMap = items.stream()
.collect(Collectors.groupingBy(s -> s.key, Collectors.toSet()));
You have to use a downstream collector like this:
Map<Key, Set<Item>> listMap = items.stream()
.collect(Collectors.groupingBy(s -> s.key, Collectors.toSet()));
edited yesterday
nullpointer
43.2k10101200
43.2k10101200
answered yesterday
Ravindra RanwalaRavindra Ranwala
10.4k42040
10.4k42040
add a comment |
add a comment |
I also like the non-stream solution sometimes:
Map<Key, Set<Item>> yourMap = new HashMap<>();
items.forEach(x -> yourMap.computeIfAbsent(x.getKey(), ignoreMe -> new HashSet<>()).add(x));
If you really wanted you could exercise to do the same via compute/merge
methods too
add a comment |
I also like the non-stream solution sometimes:
Map<Key, Set<Item>> yourMap = new HashMap<>();
items.forEach(x -> yourMap.computeIfAbsent(x.getKey(), ignoreMe -> new HashSet<>()).add(x));
If you really wanted you could exercise to do the same via compute/merge
methods too
add a comment |
I also like the non-stream solution sometimes:
Map<Key, Set<Item>> yourMap = new HashMap<>();
items.forEach(x -> yourMap.computeIfAbsent(x.getKey(), ignoreMe -> new HashSet<>()).add(x));
If you really wanted you could exercise to do the same via compute/merge
methods too
I also like the non-stream solution sometimes:
Map<Key, Set<Item>> yourMap = new HashMap<>();
items.forEach(x -> yourMap.computeIfAbsent(x.getKey(), ignoreMe -> new HashSet<>()).add(x));
If you really wanted you could exercise to do the same via compute/merge
methods too
edited yesterday
answered yesterday
EugeneEugene
70.7k9102169
70.7k9102169
add a comment |
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%2f54863316%2fuse-collectors-groupingby-to-create-a-map-to-a-set%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