Convert an array to list with specific range in Java 8
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
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
Dec 27 '18 at 6:28
1
Aside: rename your class/variables to follow proper naming conventions and have meaningful names. e.g.ArrayToListConversionTestis also a better name
– Naman
Dec 27 '18 at 6:41
Basically all answers until now (except for the answer by TongChen ) are wasting time and space. (Literally - I mean, here on the site, as well as when they are implemented). Imagine having a List with 10 Million elements, and you just want to omit the first one. Creating a stream and collecting it to a new list is O(n) in time and space. The answer that usesArrays.asList(optArr).subList(1,optArr.length)is an elegant, concise one-liner, with O(1) in time and space.
– Marco13
Dec 27 '18 at 15:26
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 Dec 27 '18 at 6:23
manjunath ramiganimanjunath ramigani
586416
586416
1
ArrayList class have a subList method, which can be used to slice the list.
– raviraja
Dec 27 '18 at 6:28
1
Aside: rename your class/variables to follow proper naming conventions and have meaningful names. e.g.ArrayToListConversionTestis also a better name
– Naman
Dec 27 '18 at 6:41
Basically all answers until now (except for the answer by TongChen ) are wasting time and space. (Literally - I mean, here on the site, as well as when they are implemented). Imagine having a List with 10 Million elements, and you just want to omit the first one. Creating a stream and collecting it to a new list is O(n) in time and space. The answer that usesArrays.asList(optArr).subList(1,optArr.length)is an elegant, concise one-liner, with O(1) in time and space.
– Marco13
Dec 27 '18 at 15:26
add a comment |
1
ArrayList class have a subList method, which can be used to slice the list.
– raviraja
Dec 27 '18 at 6:28
1
Aside: rename your class/variables to follow proper naming conventions and have meaningful names. e.g.ArrayToListConversionTestis also a better name
– Naman
Dec 27 '18 at 6:41
Basically all answers until now (except for the answer by TongChen ) are wasting time and space. (Literally - I mean, here on the site, as well as when they are implemented). Imagine having a List with 10 Million elements, and you just want to omit the first one. Creating a stream and collecting it to a new list is O(n) in time and space. The answer that usesArrays.asList(optArr).subList(1,optArr.length)is an elegant, concise one-liner, with O(1) in time and space.
– Marco13
Dec 27 '18 at 15:26
1
1
ArrayList class have a subList method, which can be used to slice the list.
– raviraja
Dec 27 '18 at 6:28
ArrayList class have a subList method, which can be used to slice the list.
– raviraja
Dec 27 '18 at 6:28
1
1
Aside: rename your class/variables to follow proper naming conventions and have meaningful names. e.g.
ArrayToListConversionTest is also a better name– Naman
Dec 27 '18 at 6:41
Aside: rename your class/variables to follow proper naming conventions and have meaningful names. e.g.
ArrayToListConversionTest is also a better name– Naman
Dec 27 '18 at 6:41
Basically all answers until now (except for the answer by TongChen ) are wasting time and space. (Literally - I mean, here on the site, as well as when they are implemented). Imagine having a List with 10 Million elements, and you just want to omit the first one. Creating a stream and collecting it to a new list is O(n) in time and space. The answer that uses
Arrays.asList(optArr).subList(1,optArr.length) is an elegant, concise one-liner, with O(1) in time and space.– Marco13
Dec 27 '18 at 15:26
Basically all answers until now (except for the answer by TongChen ) are wasting time and space. (Literally - I mean, here on the site, as well as when they are implemented). Imagine having a List with 10 Million elements, and you just want to omit the first one. Creating a stream and collecting it to a new list is O(n) in time and space. The answer that uses
Arrays.asList(optArr).subList(1,optArr.length) is an elegant, concise one-liner, with O(1) in time and space.– Marco13
Dec 27 '18 at 15:26
add a comment |
9 Answers
9
active
oldest
votes
You can use Stream.skip():
List<String> list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());
the only challenge withskipwould be selecting initial elements instead of skipping
– Naman
Dec 27 '18 at 6:38
2
@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
Dec 27 '18 at 6:40
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);
6
asList+subListhas the advantage of not having to allocate a whole new list. The array is used as as backing storage for the list instead of being copied.
– John Kugelman
Dec 27 '18 at 14:03
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
Dec 27 '18 at 6:30
Why create a new list with streams, and not justArrays.asList(optArr)?
– Marco13
Dec 27 '18 at 15:30
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);
The first one should likely be the solution. O(1) time and space, in contrast to basically all other answers here.
– Marco13
Dec 27 '18 at 15:23
add a comment |
You can also use Arrays.copyOfRange to copy an array.
Copies the specified range of the specified array into a new array. The initial index of the range (from) must lie between zero and original.length, inclusive.
public static <T> T copyOfRange(T original, int from, int to)
And then convert into List
List<String> result = Arrays.asList(Arrays.copyOfRange(optArr, 1, optArr.length));
IntStream : one other way by using IntStream
List<String> result = IntStream.range(1, optArr.length).mapToObj(i->optArr[i]).collect(Collectors.toList());
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
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 |
Why do you need to use streams? Why isn't some ancient magic like for-loops enough for the task?
String optArr = {"start", "map1", "map2", "map3"};
final List<String> list = new ArrayList<>();
for (int i = 1; i < optArr.length; i++) // skip first element
list.add(optArr[i]);
The simplest tool for the job.
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 wherever you can.
1
not content based, but index based
– Naman
Dec 27 '18 at 6:33
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
9 Answers
9
active
oldest
votes
9 Answers
9
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 withskipwould be selecting initial elements instead of skipping
– Naman
Dec 27 '18 at 6:38
2
@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
Dec 27 '18 at 6:40
add a comment |
You can use Stream.skip():
List<String> list = Arrays.stream(optArr).skip(1).collect(Collectors.toList());
the only challenge withskipwould be selecting initial elements instead of skipping
– Naman
Dec 27 '18 at 6:38
2
@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
Dec 27 '18 at 6:40
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 Dec 27 '18 at 6:27
Robby CornelissenRobby Cornelissen
46.7k147193
46.7k147193
the only challenge withskipwould be selecting initial elements instead of skipping
– Naman
Dec 27 '18 at 6:38
2
@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
Dec 27 '18 at 6:40
add a comment |
the only challenge withskipwould be selecting initial elements instead of skipping
– Naman
Dec 27 '18 at 6:38
2
@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
Dec 27 '18 at 6:40
the only challenge with
skip would be selecting initial elements instead of skipping– Naman
Dec 27 '18 at 6:38
the only challenge with
skip would be selecting initial elements instead of skipping– Naman
Dec 27 '18 at 6:38
2
2
@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
Dec 27 '18 at 6:40
@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
Dec 27 '18 at 6:40
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);
6
asList+subListhas the advantage of not having to allocate a whole new list. The array is used as as backing storage for the list instead of being copied.
– John Kugelman
Dec 27 '18 at 14:03
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);
6
asList+subListhas the advantage of not having to allocate a whole new list. The array is used as as backing storage for the list instead of being copied.
– John Kugelman
Dec 27 '18 at 14:03
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 Dec 27 '18 at 6:48
answered Dec 27 '18 at 6:27
NamanNaman
45.9k12102204
45.9k12102204
6
asList+subListhas the advantage of not having to allocate a whole new list. The array is used as as backing storage for the list instead of being copied.
– John Kugelman
Dec 27 '18 at 14:03
add a comment |
6
asList+subListhas the advantage of not having to allocate a whole new list. The array is used as as backing storage for the list instead of being copied.
– John Kugelman
Dec 27 '18 at 14:03
6
6
asList + subList has the advantage of not having to allocate a whole new list. The array is used as as backing storage for the list instead of being copied.– John Kugelman
Dec 27 '18 at 14:03
asList + subList has the advantage of not having to allocate a whole new list. The array is used as as backing storage for the list instead of being copied.– John Kugelman
Dec 27 '18 at 14:03
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
Dec 27 '18 at 6:30
Why create a new list with streams, and not justArrays.asList(optArr)?
– Marco13
Dec 27 '18 at 15:30
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
Dec 27 '18 at 6:30
Why create a new list with streams, and not justArrays.asList(optArr)?
– Marco13
Dec 27 '18 at 15:30
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 Dec 27 '18 at 6:30
answered Dec 27 '18 at 6:27
Tim BiegeleisenTim Biegeleisen
239k13100160
239k13100160
@nullpointer Um...I am suggesting to just run the original stream, and then view it however you want.
– Tim Biegeleisen
Dec 27 '18 at 6:30
Why create a new list with streams, and not justArrays.asList(optArr)?
– Marco13
Dec 27 '18 at 15:30
add a comment |
@nullpointer Um...I am suggesting to just run the original stream, and then view it however you want.
– Tim Biegeleisen
Dec 27 '18 at 6:30
Why create a new list with streams, and not justArrays.asList(optArr)?
– Marco13
Dec 27 '18 at 15:30
@nullpointer Um...I am suggesting to just run the original stream, and then view it however you want.
– Tim Biegeleisen
Dec 27 '18 at 6:30
@nullpointer Um...I am suggesting to just run the original stream, and then view it however you want.
– Tim Biegeleisen
Dec 27 '18 at 6:30
Why create a new list with streams, and not just
Arrays.asList(optArr)?– Marco13
Dec 27 '18 at 15:30
Why create a new list with streams, and not just
Arrays.asList(optArr)?– Marco13
Dec 27 '18 at 15:30
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);
The first one should likely be the solution. O(1) time and space, in contrast to basically all other answers here.
– Marco13
Dec 27 '18 at 15:23
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);
The first one should likely be the solution. O(1) time and space, in contrast to basically all other answers here.
– Marco13
Dec 27 '18 at 15:23
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 Dec 27 '18 at 6:33
TongChenTongChen
4951310
4951310
The first one should likely be the solution. O(1) time and space, in contrast to basically all other answers here.
– Marco13
Dec 27 '18 at 15:23
add a comment |
The first one should likely be the solution. O(1) time and space, in contrast to basically all other answers here.
– Marco13
Dec 27 '18 at 15:23
The first one should likely be the solution. O(1) time and space, in contrast to basically all other answers here.
– Marco13
Dec 27 '18 at 15:23
The first one should likely be the solution. O(1) time and space, in contrast to basically all other answers here.
– Marco13
Dec 27 '18 at 15:23
add a comment |
You can also use Arrays.copyOfRange to copy an array.
Copies the specified range of the specified array into a new array. The initial index of the range (from) must lie between zero and original.length, inclusive.
public static <T> T copyOfRange(T original, int from, int to)
And then convert into List
List<String> result = Arrays.asList(Arrays.copyOfRange(optArr, 1, optArr.length));
IntStream : one other way by using IntStream
List<String> result = IntStream.range(1, optArr.length).mapToObj(i->optArr[i]).collect(Collectors.toList());
add a comment |
You can also use Arrays.copyOfRange to copy an array.
Copies the specified range of the specified array into a new array. The initial index of the range (from) must lie between zero and original.length, inclusive.
public static <T> T copyOfRange(T original, int from, int to)
And then convert into List
List<String> result = Arrays.asList(Arrays.copyOfRange(optArr, 1, optArr.length));
IntStream : one other way by using IntStream
List<String> result = IntStream.range(1, optArr.length).mapToObj(i->optArr[i]).collect(Collectors.toList());
add a comment |
You can also use Arrays.copyOfRange to copy an array.
Copies the specified range of the specified array into a new array. The initial index of the range (from) must lie between zero and original.length, inclusive.
public static <T> T copyOfRange(T original, int from, int to)
And then convert into List
List<String> result = Arrays.asList(Arrays.copyOfRange(optArr, 1, optArr.length));
IntStream : one other way by using IntStream
List<String> result = IntStream.range(1, optArr.length).mapToObj(i->optArr[i]).collect(Collectors.toList());
You can also use Arrays.copyOfRange to copy an array.
Copies the specified range of the specified array into a new array. The initial index of the range (from) must lie between zero and original.length, inclusive.
public static <T> T copyOfRange(T original, int from, int to)
And then convert into List
List<String> result = Arrays.asList(Arrays.copyOfRange(optArr, 1, optArr.length));
IntStream : one other way by using IntStream
List<String> result = IntStream.range(1, optArr.length).mapToObj(i->optArr[i]).collect(Collectors.toList());
edited Dec 27 '18 at 10:01
answered Dec 27 '18 at 9:31
DeadpoolDeadpool
7,8822831
7,8822831
add a comment |
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
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
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
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
answered Dec 27 '18 at 6:28
Crutch MasterCrutch Master
814
814
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 Dec 27 '18 at 6:33
TheSprinterTheSprinter
587316
587316
add a comment |
add a comment |
Why do you need to use streams? Why isn't some ancient magic like for-loops enough for the task?
String optArr = {"start", "map1", "map2", "map3"};
final List<String> list = new ArrayList<>();
for (int i = 1; i < optArr.length; i++) // skip first element
list.add(optArr[i]);
The simplest tool for the job.
add a comment |
Why do you need to use streams? Why isn't some ancient magic like for-loops enough for the task?
String optArr = {"start", "map1", "map2", "map3"};
final List<String> list = new ArrayList<>();
for (int i = 1; i < optArr.length; i++) // skip first element
list.add(optArr[i]);
The simplest tool for the job.
add a comment |
Why do you need to use streams? Why isn't some ancient magic like for-loops enough for the task?
String optArr = {"start", "map1", "map2", "map3"};
final List<String> list = new ArrayList<>();
for (int i = 1; i < optArr.length; i++) // skip first element
list.add(optArr[i]);
The simplest tool for the job.
Why do you need to use streams? Why isn't some ancient magic like for-loops enough for the task?
String optArr = {"start", "map1", "map2", "map3"};
final List<String> list = new ArrayList<>();
for (int i = 1; i < optArr.length; i++) // skip first element
list.add(optArr[i]);
The simplest tool for the job.
answered Dec 27 '18 at 11:28
Marko PacakMarko Pacak
2,4891529
2,4891529
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 wherever you can.
1
not content based, but index based
– Naman
Dec 27 '18 at 6:33
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 wherever you can.
1
not content based, but index based
– Naman
Dec 27 '18 at 6:33
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 wherever 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 wherever you can.
edited Dec 27 '18 at 16:15
answered Dec 27 '18 at 6:31
fastcodejavafastcodejava
24.7k19110163
24.7k19110163
1
not content based, but index based
– Naman
Dec 27 '18 at 6:33
add a comment |
1
not content based, but index based
– Naman
Dec 27 '18 at 6:33
1
1
not content based, but index based
– Naman
Dec 27 '18 at 6:33
not content based, but index based
– Naman
Dec 27 '18 at 6:33
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%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
Dec 27 '18 at 6:28
1
Aside: rename your class/variables to follow proper naming conventions and have meaningful names. e.g.
ArrayToListConversionTestis also a better name– Naman
Dec 27 '18 at 6:41
Basically all answers until now (except for the answer by TongChen ) are wasting time and space. (Literally - I mean, here on the site, as well as when they are implemented). Imagine having a List with 10 Million elements, and you just want to omit the first one. Creating a stream and collecting it to a new list is O(n) in time and space. The answer that uses
Arrays.asList(optArr).subList(1,optArr.length)is an elegant, concise one-liner, with O(1) in time and space.– Marco13
Dec 27 '18 at 15:26