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);
		
	}
}