Convert an array to list with specific range in Java 8
I want to convert one string array to list with specific range. In my case I always want from index 1 to last index. I don't need the index 0 value included in the list. Is there any direct method that I can use to filter and convert to the list as I need ?
public class test1 {
public static void main(String args) {
String optArr = {"start", "map1", "map2", "map3"};
List<String> list = Arrays.stream(optArr).collect(Collectors.toList());
System.out.println(list);
}
}
java java-8
add a comment |
I want to convert one string array to list with specific range. In my case I always want from index 1 to last index. I don't need the index 0 value included in the list. Is there any direct method that I can use to filter and convert to the list as I need ?
public class test1 {
public static void main(String args) {
String optArr = {"start", "map1", "map2", "map3"};
List<String> list = Arrays.stream(optArr).collect(Collectors.toList());
System.out.println(list);
}
}
java java-8
1
ArrayList class have a subList method, which can be used to slice the list.
– raviraja
1 hour ago
1
Aside: rename your class/variables to follow proper naming conventions and have meaningful names. e.g.ArrayToListConversionTest
is also a better name
– nullpointer
1 hour ago
add a comment |
I want to convert one string array to list with specific range. In my case I always want from index 1 to last index. I don't need the index 0 value included in the list. Is there any direct method that I can use to filter and convert to the list as I need ?
public class test1 {
public static void main(String args) {
String optArr = {"start", "map1", "map2", "map3"};
List<String> list = Arrays.stream(optArr).collect(Collectors.toList());
System.out.println(list);
}
}
java java-8
I want to convert one string array to list with specific range. In my case I always want from index 1 to last index. I don't need the index 0 value included in the list. Is there any direct method that I can use to filter and convert to the list as I need ?
public class test1 {
public static void main(String args) {
String optArr = {"start", "map1", "map2", "map3"};
List<String> list = Arrays.stream(optArr).collect(Collectors.toList());
System.out.println(list);
}
}
java java-8
java java-8
asked 1 hour ago
manjunath ramigani
501415
501415
1
ArrayList class have a subList method, which can be used to slice the list.
– raviraja
1 hour ago
1
Aside: rename your class/variables to follow proper naming conventions and have meaningful names. e.g.ArrayToListConversionTest
is also a better name
– nullpointer
1 hour ago
add a comment |
1
ArrayList class have a subList method, which can be used to slice the list.
– raviraja
1 hour ago
1
Aside: rename your class/variables to follow proper naming conventions and have meaningful names. e.g.ArrayToListConversionTest
is also a better name
– nullpointer
1 hour ago
1
1
ArrayList class have a subList method, which can be used to slice the list.
– raviraja
1 hour ago
ArrayList class have a subList method, which can be used to slice the list.
– raviraja
1 hour ago
1
1
Aside: rename your class/variables to follow proper naming conventions and have meaningful names. e.g.
ArrayToListConversionTest
is also a better name– nullpointer
1 hour ago
Aside: rename your class/variables to follow proper naming conventions and have meaningful names. e.g.
ArrayToListConversionTest
is also a better name– nullpointer
1 hour ago
add a comment |
7 Answers
7
active
oldest
votes
You can use Stream.skip()
:
List<String> list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());
the only challenge withskip
would be selecting initial elements instead of skipping
– nullpointer
1 hour ago
1
@nullpointer I think we can all safely agree that for the given use case, your answer is the superior one. Have an upvote.
– Robby Cornelissen
1 hour ago
add a comment |
You can also use the overloaded method Arrays.stream(T array, int startInclusive, int endExclusive)
as :
List<String> list = Arrays.stream(optArr, 1, optArr.length)
.collect(Collectors.toList());
Returns a sequential Stream with the specified range of the specified
array as its source.
Alternatively(non Java-8), using the subList
is an option, but I would prefer chaining it in one-line instead of creating a new object as:
List<String> list = Arrays.asList(optArr).subList(1, optArr.length);
add a comment |
One non Java 8 option might be to just create a view on top of your current list which omits the first element:
List<String> list = Arrays.stream(optArr).collect(Collectors.toList());
List<String> viewList = list.subList(1, list.size());
This would mean though that the underlying data structure is still the original list, but one extra element in memory does not seem like a big penalty.
@nullpointer Um...I am suggesting to just run the original stream, and then view it however you want.
– Tim Biegeleisen
1 hour ago
add a comment |
List<String> list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());
I think it must work.
See docs here : https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html
New contributor
add a comment |
One method use List.sublist(int,int)
List<String> list = Arrays.asList(optArr).subList(1,optArr.length);
System.out.println(list);
Second method use Stream
List<String> list = Arrays.stream(optArr)
.skip(1)
.collect(Collectors.toList());
System.out.println(list);
add a comment |
It should be like this.
List<String> al = new ArrayList<>(Arrays.asList(optArr));
List actualList = list.subList(1, al.size());
add a comment |
Looking at your data you might consider :
List<String> list = Stream.of(optArr).filter(s -> s.startsWith("map")).collect(toList());
But if you just want to filter the first index sublist
is the way to go.
You do not need to use stream whatever of are you can.
1
not content based, but index based
– nullpointer
1 hour ago
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%2f53940628%2fconvert-an-array-to-list-with-specific-range-in-java-8%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
7 Answers
7
active
oldest
votes
7 Answers
7
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can use Stream.skip()
:
List<String> list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());
the only challenge withskip
would be selecting initial elements instead of skipping
– nullpointer
1 hour ago
1
@nullpointer I think we can all safely agree that for the given use case, your answer is the superior one. Have an upvote.
– Robby Cornelissen
1 hour ago
add a comment |
You can use Stream.skip()
:
List<String> list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());
the only challenge withskip
would be selecting initial elements instead of skipping
– nullpointer
1 hour ago
1
@nullpointer I think we can all safely agree that for the given use case, your answer is the superior one. Have an upvote.
– Robby Cornelissen
1 hour ago
add a comment |
You can use Stream.skip()
:
List<String> list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());
You can use Stream.skip()
:
List<String> list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());
answered 1 hour ago
Robby Cornelissen
43.2k126789
43.2k126789
the only challenge withskip
would be selecting initial elements instead of skipping
– nullpointer
1 hour ago
1
@nullpointer I think we can all safely agree that for the given use case, your answer is the superior one. Have an upvote.
– Robby Cornelissen
1 hour ago
add a comment |
the only challenge withskip
would be selecting initial elements instead of skipping
– nullpointer
1 hour ago
1
@nullpointer I think we can all safely agree that for the given use case, your answer is the superior one. Have an upvote.
– Robby Cornelissen
1 hour ago
the only challenge with
skip
would be selecting initial elements instead of skipping– nullpointer
1 hour ago
the only challenge with
skip
would be selecting initial elements instead of skipping– nullpointer
1 hour ago
1
1
@nullpointer I think we can all safely agree that for the given use case, your answer is the superior one. Have an upvote.
– Robby Cornelissen
1 hour ago
@nullpointer I think we can all safely agree that for the given use case, your answer is the superior one. Have an upvote.
– Robby Cornelissen
1 hour ago
add a comment |
You can also use the overloaded method Arrays.stream(T array, int startInclusive, int endExclusive)
as :
List<String> list = Arrays.stream(optArr, 1, optArr.length)
.collect(Collectors.toList());
Returns a sequential Stream with the specified range of the specified
array as its source.
Alternatively(non Java-8), using the subList
is an option, but I would prefer chaining it in one-line instead of creating a new object as:
List<String> list = Arrays.asList(optArr).subList(1, optArr.length);
add a comment |
You can also use the overloaded method Arrays.stream(T array, int startInclusive, int endExclusive)
as :
List<String> list = Arrays.stream(optArr, 1, optArr.length)
.collect(Collectors.toList());
Returns a sequential Stream with the specified range of the specified
array as its source.
Alternatively(non Java-8), using the subList
is an option, but I would prefer chaining it in one-line instead of creating a new object as:
List<String> list = Arrays.asList(optArr).subList(1, optArr.length);
add a comment |
You can also use the overloaded method Arrays.stream(T array, int startInclusive, int endExclusive)
as :
List<String> list = Arrays.stream(optArr, 1, optArr.length)
.collect(Collectors.toList());
Returns a sequential Stream with the specified range of the specified
array as its source.
Alternatively(non Java-8), using the subList
is an option, but I would prefer chaining it in one-line instead of creating a new object as:
List<String> list = Arrays.asList(optArr).subList(1, optArr.length);
You can also use the overloaded method Arrays.stream(T array, int startInclusive, int endExclusive)
as :
List<String> list = Arrays.stream(optArr, 1, optArr.length)
.collect(Collectors.toList());
Returns a sequential Stream with the specified range of the specified
array as its source.
Alternatively(non Java-8), using the subList
is an option, but I would prefer chaining it in one-line instead of creating a new object as:
List<String> list = Arrays.asList(optArr).subList(1, optArr.length);
edited 1 hour ago
answered 1 hour ago
nullpointer
41.2k1086173
41.2k1086173
add a comment |
add a comment |
One non Java 8 option might be to just create a view on top of your current list which omits the first element:
List<String> list = Arrays.stream(optArr).collect(Collectors.toList());
List<String> viewList = list.subList(1, list.size());
This would mean though that the underlying data structure is still the original list, but one extra element in memory does not seem like a big penalty.
@nullpointer Um...I am suggesting to just run the original stream, and then view it however you want.
– Tim Biegeleisen
1 hour ago
add a comment |
One non Java 8 option might be to just create a view on top of your current list which omits the first element:
List<String> list = Arrays.stream(optArr).collect(Collectors.toList());
List<String> viewList = list.subList(1, list.size());
This would mean though that the underlying data structure is still the original list, but one extra element in memory does not seem like a big penalty.
@nullpointer Um...I am suggesting to just run the original stream, and then view it however you want.
– Tim Biegeleisen
1 hour ago
add a comment |
One non Java 8 option might be to just create a view on top of your current list which omits the first element:
List<String> list = Arrays.stream(optArr).collect(Collectors.toList());
List<String> viewList = list.subList(1, list.size());
This would mean though that the underlying data structure is still the original list, but one extra element in memory does not seem like a big penalty.
One non Java 8 option might be to just create a view on top of your current list which omits the first element:
List<String> list = Arrays.stream(optArr).collect(Collectors.toList());
List<String> viewList = list.subList(1, list.size());
This would mean though that the underlying data structure is still the original list, but one extra element in memory does not seem like a big penalty.
edited 1 hour ago
answered 1 hour ago
Tim Biegeleisen
216k1386139
216k1386139
@nullpointer Um...I am suggesting to just run the original stream, and then view it however you want.
– Tim Biegeleisen
1 hour ago
add a comment |
@nullpointer Um...I am suggesting to just run the original stream, and then view it however you want.
– Tim Biegeleisen
1 hour ago
@nullpointer Um...I am suggesting to just run the original stream, and then view it however you want.
– Tim Biegeleisen
1 hour ago
@nullpointer Um...I am suggesting to just run the original stream, and then view it however you want.
– Tim Biegeleisen
1 hour ago
add a comment |
List<String> list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());
I think it must work.
See docs here : https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html
New contributor
add a comment |
List<String> list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());
I think it must work.
See docs here : https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html
New contributor
add a comment |
List<String> list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());
I think it must work.
See docs here : https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html
New contributor
List<String> list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());
I think it must work.
See docs here : https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html
New contributor
New contributor
answered 1 hour ago
Crutch Master
313
313
New contributor
New contributor
add a comment |
add a comment |
One method use List.sublist(int,int)
List<String> list = Arrays.asList(optArr).subList(1,optArr.length);
System.out.println(list);
Second method use Stream
List<String> list = Arrays.stream(optArr)
.skip(1)
.collect(Collectors.toList());
System.out.println(list);
add a comment |
One method use List.sublist(int,int)
List<String> list = Arrays.asList(optArr).subList(1,optArr.length);
System.out.println(list);
Second method use Stream
List<String> list = Arrays.stream(optArr)
.skip(1)
.collect(Collectors.toList());
System.out.println(list);
add a comment |
One method use List.sublist(int,int)
List<String> list = Arrays.asList(optArr).subList(1,optArr.length);
System.out.println(list);
Second method use Stream
List<String> list = Arrays.stream(optArr)
.skip(1)
.collect(Collectors.toList());
System.out.println(list);
One method use List.sublist(int,int)
List<String> list = Arrays.asList(optArr).subList(1,optArr.length);
System.out.println(list);
Second method use Stream
List<String> list = Arrays.stream(optArr)
.skip(1)
.collect(Collectors.toList());
System.out.println(list);
answered 1 hour ago
TongChen
1046
1046
add a comment |
add a comment |
It should be like this.
List<String> al = new ArrayList<>(Arrays.asList(optArr));
List actualList = list.subList(1, al.size());
add a comment |
It should be like this.
List<String> al = new ArrayList<>(Arrays.asList(optArr));
List actualList = list.subList(1, al.size());
add a comment |
It should be like this.
List<String> al = new ArrayList<>(Arrays.asList(optArr));
List actualList = list.subList(1, al.size());
It should be like this.
List<String> al = new ArrayList<>(Arrays.asList(optArr));
List actualList = list.subList(1, al.size());
answered 1 hour ago
TheSprinter
244110
244110
add a comment |
add a comment |
Looking at your data you might consider :
List<String> list = Stream.of(optArr).filter(s -> s.startsWith("map")).collect(toList());
But if you just want to filter the first index sublist
is the way to go.
You do not need to use stream whatever of are you can.
1
not content based, but index based
– nullpointer
1 hour ago
add a comment |
Looking at your data you might consider :
List<String> list = Stream.of(optArr).filter(s -> s.startsWith("map")).collect(toList());
But if you just want to filter the first index sublist
is the way to go.
You do not need to use stream whatever of are you can.
1
not content based, but index based
– nullpointer
1 hour ago
add a comment |
Looking at your data you might consider :
List<String> list = Stream.of(optArr).filter(s -> s.startsWith("map")).collect(toList());
But if you just want to filter the first index sublist
is the way to go.
You do not need to use stream whatever of are you can.
Looking at your data you might consider :
List<String> list = Stream.of(optArr).filter(s -> s.startsWith("map")).collect(toList());
But if you just want to filter the first index sublist
is the way to go.
You do not need to use stream whatever of are you can.
edited 1 hour ago
answered 1 hour ago
fastcodejava
23.8k19109161
23.8k19109161
1
not content based, but index based
– nullpointer
1 hour ago
add a comment |
1
not content based, but index based
– nullpointer
1 hour ago
1
1
not content based, but index based
– nullpointer
1 hour ago
not content based, but index based
– nullpointer
1 hour ago
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f53940628%2fconvert-an-array-to-list-with-specific-range-in-java-8%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
1
ArrayList class have a subList method, which can be used to slice the list.
– raviraja
1 hour ago
1
Aside: rename your class/variables to follow proper naming conventions and have meaningful names. e.g.
ArrayToListConversionTest
is also a better name– nullpointer
1 hour ago