Created
December 2, 2018 07:18
-
-
Save naoto-ogawa/1f5347812aae1aaa4d658832252f44a8 to your computer and use it in GitHub Desktop.
Java reduce sample
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.List; | |
import java.util.stream.Collectors; | |
import java.util.stream.IntStream; | |
import java.util.stream.Stream; | |
public class Main3 { | |
public static void main(String[] args) { | |
log(test01("abc")); | |
log(test02("abc")); | |
log(test03("snakeToCamel")); | |
log(test04("snake_to_camel")); | |
// test00(); | |
int r = Stream.of(1,2,3).reduce(10, (x,y) -> x + y); | |
System.out.println(r); // 16 | |
} | |
private static void log(Object obj) { | |
System.out.println(obj); | |
} | |
private static String test04(String str) { | |
return Arrays.stream(str.split("_")) | |
.map(x -> x.substring(0,1).toUpperCase() + x.substring(1).toLowerCase()) | |
.collect(Collectors.joining()); | |
} | |
private static String test03(String in) { | |
String out = in.codePoints() | |
.mapToObj(c -> (char)c) // IntStream to Stream<Character> | |
.reduce("" , | |
(acc, v) -> acc + (Character.isLowerCase(v) ? v : "_" + Character.toLowerCase(v)) , | |
(s1, s2) -> s1 + s2 | |
); | |
return out; | |
} | |
private static List<Character> test02(String in) { | |
List<Character> out = in.codePoints() | |
.mapToObj(c -> Character.valueOf((char)c)) | |
.reduce(new ArrayList() , | |
(acc, v) -> {acc.add(v);return acc;}, | |
(s1, s2) -> {s1.addAll(s2);return s1;} | |
); | |
return out; | |
} | |
private static String test01(String in) { | |
String out = in.codePoints() | |
.mapToObj(x -> String.valueOf(x)) | |
.reduce("x" , | |
(String acc, String v) -> acc + "_" + v, | |
(String s1, String s2) -> s1 + s2 | |
); | |
return out; | |
} | |
private static String test00() { | |
List<String> tokens = new ArrayList<String>(); | |
for (int i = 0; i < 1000; i++) { | |
tokens.add("_" + i + "\n"); | |
} | |
String ret = tokens.parallelStream().reduce("", String::concat, String::concat); | |
return ret; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment