JAVA Spring
0. JAVA 기초 (9)
Louis.T.Kim
2020. 3. 8. 16:40
- Stream :
import java.util.Arrays;
public class TestIntArry {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
int sum = Arrays.stream(arr).sum(); // 한번 쓰면 끝!
int count = (int)Arrays.stream(arr).count();
System.out.println(sum);
System.out.println(count);
System.out.println(Arrays.stream(arr).reduce(0, (a,b) -> a+b)); // reduce()
}
}
package innerClass;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class TestIntArry {
public static void main(String[] args) {
List<String> sList = new ArrayList<String>(); // ArrayList 선언
sList.add("CCCCCC");
sList.add("B");
sList.add("AAA");
Stream<String> stream1 = sList.stream();
stream1.forEach(s->System.out.print(s+" ")); // 출력
System.out.println();
// 이제 stream을 다시 써야한다.
sList.stream().sorted().forEach((s->System.out.print(s+" "))); // 중간에 정렬함
System.out.println();
sList.stream().map(s->s.length()).forEach((s->System.out.print(s+" "))); // 중간에 길이를 측정
}
}
- reduce() 연산
- Binary Operator를 사용하면 더 간단하다.
import java.util.Arrays;
import java.util.function.BinaryOperator;
class CompareString implements BinaryOperator<String> {
@Override
public String apply(String s1, String s2) { // apply를 override
if(s1.getBytes().length >= s2.getBytes().length)
return s1;
else
return s2;
}
}
public class TestReduce {
public static void main(String[] args) {
String[] greetings = { "안녕하세요~~~", "hello", "hi"};
// Lambda를 이용한 방법 1
String longest = Arrays.stream(greetings).reduce("", (s1,s2)-> {
if(s1.getBytes().length >= s2.getBytes().length)
return s1;
else
return s2;
});
// BinaryOperator를 이용한 방법 2
String longest2 =Arrays.stream(greetings).reduce(new CompareString()).get();
System.out.println(longest);
System.out.println(longest2);
}
}