Get first n elements of List java
Fastest way to get the first n elements of a List into an Array What is the fastest way to get the first n elements of a list stored in an array? Considering this as the scenario: int n = 10; ArrayList in = new ArrayList<>(); for(int i = 0; i < (n+10); i++) in.add("foobar");Option 1: String[] out = new String[n]; for(int i = 0; i< n; i++) out[i]=in.get(i);Option 2: Option 3: Is there a faster way? Maybe with Java8-streams? Option 1 Faster Than Option 2Because Option 2 creates a new List reference, and then creates an n element array from the List (option 1 perfectly sizes the output array). However, first you need to fix the off by one bug. Use < (not <=). Like, String[] out = new String[n]; for(int i = 0; i < n; i++) { out[i] = in.get(i); }Assumption: list - List Using Java 8 Streams,
It mostly depends on how big n is. If n==0, nothing beats option#1 :) If n is very large, toArray(new String[n]) is faster. Option 3 Iterators are faster than using the get operation, since the get operation has to start from the beginning if it has to do some traversal. It probably wouldn't make a difference in an ArrayList, but other data structures could see a noticeable speed difference. This is also compatible with things that aren't lists, like sets. String[] out = new String[n]; Iterator iterator = in.iterator(); for (int i = 0; i < n && iterator.hasNext(); i++) out[i] = iterator.next();Use: Arrays.copyOf(yourArray,n); |