get a comma separated string using java stream
I have the following code using java Stream
.
I am trying the get the function to build a string of value: "a,b" in this case.
however, the output (separatedByComma
in this case) is always "b".
Could somebody shed some light please?
@Test
public void testJoin() {
List<MOccS> occList = new ArrayList<> ( );
MOccS mOccS = new MOccS ();
mOccS.setOccSCd ( "1" );
mOccS.setOccSNm ( "a" );
occList.add ( mOccS );
MOccS mOccS2 = new MOccS ();
mOccS2.setOccSCd ( "2" );
mOccS2.setOccSNm ( "b" );
occList.add ( mOccS2 );
List<String> strings = new ArrayList<> ( );
strings.add ( "1" );
strings.add ( "2" );
String separatedByComma = "";
for(String word: strings) {
separatedByComma = occList.stream ()
.filter ( occ -> word.equalsIgnoreCase ( occ.getOccSCd () ) )
.map ( occ -> occ.getOccSNm () )
.collect ( Collectors.joining ( "," ) );
}
System.out.println (separatedByComma);
}
class MOccS{
String occSCd;
String occSNm;
...
getter/setter
...
}
java java-8 java-stream
add a comment |
I have the following code using java Stream
.
I am trying the get the function to build a string of value: "a,b" in this case.
however, the output (separatedByComma
in this case) is always "b".
Could somebody shed some light please?
@Test
public void testJoin() {
List<MOccS> occList = new ArrayList<> ( );
MOccS mOccS = new MOccS ();
mOccS.setOccSCd ( "1" );
mOccS.setOccSNm ( "a" );
occList.add ( mOccS );
MOccS mOccS2 = new MOccS ();
mOccS2.setOccSCd ( "2" );
mOccS2.setOccSNm ( "b" );
occList.add ( mOccS2 );
List<String> strings = new ArrayList<> ( );
strings.add ( "1" );
strings.add ( "2" );
String separatedByComma = "";
for(String word: strings) {
separatedByComma = occList.stream ()
.filter ( occ -> word.equalsIgnoreCase ( occ.getOccSCd () ) )
.map ( occ -> occ.getOccSNm () )
.collect ( Collectors.joining ( "," ) );
}
System.out.println (separatedByComma);
}
class MOccS{
String occSCd;
String occSNm;
...
getter/setter
...
}
java java-8 java-stream
add a comment |
I have the following code using java Stream
.
I am trying the get the function to build a string of value: "a,b" in this case.
however, the output (separatedByComma
in this case) is always "b".
Could somebody shed some light please?
@Test
public void testJoin() {
List<MOccS> occList = new ArrayList<> ( );
MOccS mOccS = new MOccS ();
mOccS.setOccSCd ( "1" );
mOccS.setOccSNm ( "a" );
occList.add ( mOccS );
MOccS mOccS2 = new MOccS ();
mOccS2.setOccSCd ( "2" );
mOccS2.setOccSNm ( "b" );
occList.add ( mOccS2 );
List<String> strings = new ArrayList<> ( );
strings.add ( "1" );
strings.add ( "2" );
String separatedByComma = "";
for(String word: strings) {
separatedByComma = occList.stream ()
.filter ( occ -> word.equalsIgnoreCase ( occ.getOccSCd () ) )
.map ( occ -> occ.getOccSNm () )
.collect ( Collectors.joining ( "," ) );
}
System.out.println (separatedByComma);
}
class MOccS{
String occSCd;
String occSNm;
...
getter/setter
...
}
java java-8 java-stream
I have the following code using java Stream
.
I am trying the get the function to build a string of value: "a,b" in this case.
however, the output (separatedByComma
in this case) is always "b".
Could somebody shed some light please?
@Test
public void testJoin() {
List<MOccS> occList = new ArrayList<> ( );
MOccS mOccS = new MOccS ();
mOccS.setOccSCd ( "1" );
mOccS.setOccSNm ( "a" );
occList.add ( mOccS );
MOccS mOccS2 = new MOccS ();
mOccS2.setOccSCd ( "2" );
mOccS2.setOccSNm ( "b" );
occList.add ( mOccS2 );
List<String> strings = new ArrayList<> ( );
strings.add ( "1" );
strings.add ( "2" );
String separatedByComma = "";
for(String word: strings) {
separatedByComma = occList.stream ()
.filter ( occ -> word.equalsIgnoreCase ( occ.getOccSCd () ) )
.map ( occ -> occ.getOccSNm () )
.collect ( Collectors.joining ( "," ) );
}
System.out.println (separatedByComma);
}
class MOccS{
String occSCd;
String occSNm;
...
getter/setter
...
}
java java-8 java-stream
java java-8 java-stream
edited Nov 14 '18 at 8:39
Eran
284k37462551
284k37462551
asked Nov 14 '18 at 8:20
zaozaoerzaozaoer
72110
72110
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
Each iteration of your for
loop overwrites the value of separatedByComma
. The first iteration assigns the String
"a" to it, and the second replaces it with "b".
You should Stream
over the elements of the strings
List
in order to join the String
s that match each of them into a single output String
:
String separatedByComma =
strings.stream()
.flatMap(word -> occList.stream()
.filter(occ -> word.equalsIgnoreCase (occ.getOccSCd()))
.map (occ -> occ.getOccSNm()))
.collect(Collectors.joining (","));
Output:
a,b
Thank you very much, your solution produces exactly what I needed.
– zaozaoer
Nov 14 '18 at 8:56
add a comment |
In your loop for(String word: strings)
you overwrite your separatedByComma
variable.
I think you are right, could you let me know how to fix it? sorry I am new to java stream...
– zaozaoer
Nov 14 '18 at 8:24
If you want to filteroccList
and allow only those whichgetOccSCd
is in list of string I can give you code sample.
– talex
Nov 14 '18 at 8:26
thanks so much for your quick answer as well. It was very helpful!
– zaozaoer
Nov 14 '18 at 8:56
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%2f53295725%2fget-a-comma-separated-string-using-java-stream%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Each iteration of your for
loop overwrites the value of separatedByComma
. The first iteration assigns the String
"a" to it, and the second replaces it with "b".
You should Stream
over the elements of the strings
List
in order to join the String
s that match each of them into a single output String
:
String separatedByComma =
strings.stream()
.flatMap(word -> occList.stream()
.filter(occ -> word.equalsIgnoreCase (occ.getOccSCd()))
.map (occ -> occ.getOccSNm()))
.collect(Collectors.joining (","));
Output:
a,b
Thank you very much, your solution produces exactly what I needed.
– zaozaoer
Nov 14 '18 at 8:56
add a comment |
Each iteration of your for
loop overwrites the value of separatedByComma
. The first iteration assigns the String
"a" to it, and the second replaces it with "b".
You should Stream
over the elements of the strings
List
in order to join the String
s that match each of them into a single output String
:
String separatedByComma =
strings.stream()
.flatMap(word -> occList.stream()
.filter(occ -> word.equalsIgnoreCase (occ.getOccSCd()))
.map (occ -> occ.getOccSNm()))
.collect(Collectors.joining (","));
Output:
a,b
Thank you very much, your solution produces exactly what I needed.
– zaozaoer
Nov 14 '18 at 8:56
add a comment |
Each iteration of your for
loop overwrites the value of separatedByComma
. The first iteration assigns the String
"a" to it, and the second replaces it with "b".
You should Stream
over the elements of the strings
List
in order to join the String
s that match each of them into a single output String
:
String separatedByComma =
strings.stream()
.flatMap(word -> occList.stream()
.filter(occ -> word.equalsIgnoreCase (occ.getOccSCd()))
.map (occ -> occ.getOccSNm()))
.collect(Collectors.joining (","));
Output:
a,b
Each iteration of your for
loop overwrites the value of separatedByComma
. The first iteration assigns the String
"a" to it, and the second replaces it with "b".
You should Stream
over the elements of the strings
List
in order to join the String
s that match each of them into a single output String
:
String separatedByComma =
strings.stream()
.flatMap(word -> occList.stream()
.filter(occ -> word.equalsIgnoreCase (occ.getOccSCd()))
.map (occ -> occ.getOccSNm()))
.collect(Collectors.joining (","));
Output:
a,b
edited Nov 14 '18 at 8:41
answered Nov 14 '18 at 8:25
EranEran
284k37462551
284k37462551
Thank you very much, your solution produces exactly what I needed.
– zaozaoer
Nov 14 '18 at 8:56
add a comment |
Thank you very much, your solution produces exactly what I needed.
– zaozaoer
Nov 14 '18 at 8:56
Thank you very much, your solution produces exactly what I needed.
– zaozaoer
Nov 14 '18 at 8:56
Thank you very much, your solution produces exactly what I needed.
– zaozaoer
Nov 14 '18 at 8:56
add a comment |
In your loop for(String word: strings)
you overwrite your separatedByComma
variable.
I think you are right, could you let me know how to fix it? sorry I am new to java stream...
– zaozaoer
Nov 14 '18 at 8:24
If you want to filteroccList
and allow only those whichgetOccSCd
is in list of string I can give you code sample.
– talex
Nov 14 '18 at 8:26
thanks so much for your quick answer as well. It was very helpful!
– zaozaoer
Nov 14 '18 at 8:56
add a comment |
In your loop for(String word: strings)
you overwrite your separatedByComma
variable.
I think you are right, could you let me know how to fix it? sorry I am new to java stream...
– zaozaoer
Nov 14 '18 at 8:24
If you want to filteroccList
and allow only those whichgetOccSCd
is in list of string I can give you code sample.
– talex
Nov 14 '18 at 8:26
thanks so much for your quick answer as well. It was very helpful!
– zaozaoer
Nov 14 '18 at 8:56
add a comment |
In your loop for(String word: strings)
you overwrite your separatedByComma
variable.
In your loop for(String word: strings)
you overwrite your separatedByComma
variable.
edited Nov 14 '18 at 8:47
Ole V.V.
28.6k63352
28.6k63352
answered Nov 14 '18 at 8:23
talextalex
11k1648
11k1648
I think you are right, could you let me know how to fix it? sorry I am new to java stream...
– zaozaoer
Nov 14 '18 at 8:24
If you want to filteroccList
and allow only those whichgetOccSCd
is in list of string I can give you code sample.
– talex
Nov 14 '18 at 8:26
thanks so much for your quick answer as well. It was very helpful!
– zaozaoer
Nov 14 '18 at 8:56
add a comment |
I think you are right, could you let me know how to fix it? sorry I am new to java stream...
– zaozaoer
Nov 14 '18 at 8:24
If you want to filteroccList
and allow only those whichgetOccSCd
is in list of string I can give you code sample.
– talex
Nov 14 '18 at 8:26
thanks so much for your quick answer as well. It was very helpful!
– zaozaoer
Nov 14 '18 at 8:56
I think you are right, could you let me know how to fix it? sorry I am new to java stream...
– zaozaoer
Nov 14 '18 at 8:24
I think you are right, could you let me know how to fix it? sorry I am new to java stream...
– zaozaoer
Nov 14 '18 at 8:24
If you want to filter
occList
and allow only those which getOccSCd
is in list of string I can give you code sample.– talex
Nov 14 '18 at 8:26
If you want to filter
occList
and allow only those which getOccSCd
is in list of string I can give you code sample.– talex
Nov 14 '18 at 8:26
thanks so much for your quick answer as well. It was very helpful!
– zaozaoer
Nov 14 '18 at 8:56
thanks so much for your quick answer as well. It was very helpful!
– zaozaoer
Nov 14 '18 at 8:56
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%2f53295725%2fget-a-comma-separated-string-using-java-stream%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