/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
int count = 10_000; // 1_000 100_000
for ( int i = 0 ; i < count ; i++ ) {
integers
[ i
] = Integer.
valueOf( i
);// System.out.println( integers[ i ] );
}
// System.out.println( Arrays.asList( integers ) );
// First, convert using the old-fashioned way.
long oldStart
= System.
nanoTime(); int[] ints = new int[ count ];
for ( int i = 0 ; i < integers.length ; i++ ) {
ints[ i ] = ( null == integers[ i ] ) ? 0 : integers[ i ]; // Auto-boxing converts the object `Integer` to primitive `int`.
// System.out.println( ints[ i ] );
}
long oldElapsed
= ( System.
nanoTime() - oldStart
);
// Second, convert using modern Streams.
long newStart
= System.
nanoTime(); int[] intsStreamed
= Arrays.
stream( integers
).
mapToInt( i
-> i
!= null ? i
: 0 ).
toArray(); long newElapsed
= ( System.
nanoTime() - newStart
); // System.out.println( intsStreamed[ 0 ] ); // Check first.
// System.out.println( intsStreamed[ count - 1 ] ); // Check last.
System.
out.
println( "oldElapsed: " + oldElapsed
); System.
out.
println( "newElapsed: " + newElapsed
);
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoKICAgICAgICBpbnQgY291bnQgPSAxMF8wMDA7ICAvLyAxXzAwMCAxMDBfMDAwCgogICAgICAgIEludGVnZXJbXSBpbnRlZ2VycyA9IG5ldyBJbnRlZ2VyWyBjb3VudCBdOwogICAgICAgIGZvciAoIGludCBpID0gMCA7IGkgPCBjb3VudCA7IGkrKyApIHsKICAgICAgICAgICAgaW50ZWdlcnNbIGkgXSA9IEludGVnZXIudmFsdWVPZiggaSApOwovLyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggaW50ZWdlcnNbIGkgXSApOwogICAgICAgIH0KLy8gICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIEFycmF5cy5hc0xpc3QoIGludGVnZXJzICkgKTsKCiAgICAgICAgLy8gRmlyc3QsIGNvbnZlcnQgdXNpbmcgdGhlIG9sZC1mYXNoaW9uZWQgd2F5LgogICAgICAgIGxvbmcgb2xkU3RhcnQgPSBTeXN0ZW0ubmFub1RpbWUoKTsKICAgICAgICBpbnRbXSBpbnRzID0gbmV3IGludFsgY291bnQgXTsKICAgICAgICBmb3IgKCBpbnQgaSA9IDAgOyBpIDwgaW50ZWdlcnMubGVuZ3RoIDsgaSsrICkgewogICAgICAgICAgICBpbnRzWyBpIF0gPSAoIG51bGwgPT0gaW50ZWdlcnNbIGkgXSApID8gMCA6IGludGVnZXJzWyBpIF07ICAvLyBBdXRvLWJveGluZyBjb252ZXJ0cyAgdGhlIG9iamVjdCBgSW50ZWdlcmAgdG8gcHJpbWl0aXZlIGBpbnRgLgovLyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggaW50c1sgaSBdICk7CiAgICAgICAgfQogICAgICAgIGxvbmcgb2xkRWxhcHNlZCA9ICggU3lzdGVtLm5hbm9UaW1lKCkgLSBvbGRTdGFydCApOwoKICAgICAgICAvLyBTZWNvbmQsIGNvbnZlcnQgdXNpbmcgbW9kZXJuIFN0cmVhbXMuCiAgICAgICAgbG9uZyBuZXdTdGFydCA9IFN5c3RlbS5uYW5vVGltZSgpOwogICAgICAgIGludFtdIGludHNTdHJlYW1lZCA9IEFycmF5cy5zdHJlYW0oIGludGVnZXJzICkubWFwVG9JbnQoIGkgLT4gaSAhPSBudWxsID8gaSA6IDAgKS50b0FycmF5KCk7CiAgICAgICAgbG9uZyBuZXdFbGFwc2VkID0gKCBTeXN0ZW0ubmFub1RpbWUoKSAtIG5ld1N0YXJ0ICk7Ci8vICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIGludHNTdHJlYW1lZFsgMCBdICk7ICAgICAgICAgLy8gQ2hlY2sgZmlyc3QuCi8vICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIGludHNTdHJlYW1lZFsgY291bnQgLSAxIF0gKTsgLy8gQ2hlY2sgbGFzdC4KCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCAib2xkRWxhcHNlZDogIiArIG9sZEVsYXBzZWQgKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oICJuZXdFbGFwc2VkOiAiICsgbmV3RWxhcHNlZCApOwogICAgICAgIAoJfQp9