[Stream] Java Stream을 이용한 배열 자르기

2020. 8. 16. 02:213_개발/3_1_JAVA

1. skip(숫자) : 선택한 숫자 이후의 데이터만 노출한다.

사용법 : [배열형 함수].stream().skip(3);

ex) 

List<Cat> cats = Arrays.asList(
			new Cat(1, "sana"),    
			new Cat(2, "momo"),
			new Cat(3, "mina"),    
			new Cat(4, "jihyo"),
			new Cat(5, "nayeon"),
			new Cat(6, "jeongyeon ")
		 );

		System.out.println("===============================");
		cats.stream().skip(3).forEach(System.out::println);

위와 같이 6개의 객체를 넣고 skip(3)을넣으면 4번째 이후의 데이터부터 출력된다.

 

결과값 

Cat [number=4, name=jihyo]
Cat [number=5, name=nayeon]
Cat [number=6, name=jeongyeon ]

 

2. limit(숫자) : 선택한 숫자 이전의 데이터만 노출한다.

사용법 :  [배열형 함수].stream().limit(3);

ex)

List<Cat> cats = Arrays.asList(
			new Cat(1, "sana"),    
			new Cat(2, "momo"),
			new Cat(3, "mina"),    
			new Cat(4, "jihyo"),
			new Cat(5, "nayeon"),
			new Cat(6, "jeongyeon ")
		 );

		System.out.println("===============================");
		cats.stream().limit(3).forEach(System.out::println);
	}

위와 같이 6개의 객체를 넣고 limit(3)을 넣으면 3번째 이전의 데이터만 출력된다.

 

결과값 

===============================
Cat [number=1, name=sana]
Cat [number=2, name=momo]
Cat [number=3, name=mina]

 

위의 형태를 보면 생각나는게 있을 것이다.

그런 바로 페이징이다.

 

보통 페이징 처리를 할 때는 DB에서 (mysql은 limit, oracle은 rownum)을 이용해서 하는데

아주 가~~~~~~~~~끔 DB에서가 아니라 타 서비스에서 데이터 목록을 가져오고

java 단에서 페이징을 해야 하는 경우가 존재한다.

 

이럴 때 skip, limit를 이용하여 위의 DB 방식과 동일한 방식으로 페이징 처리가 가능하다.