본문 바로가기

프로그래밍/Java

List<?>를 사이즈별 List<List<?>> 로 나누기 (Lists.partition)

반응형

문제

List<String>에 PK 값이 담겨 있다. 오라클 WHERE 절에서 IN (...) 값으로 사용하려고 했으나, IN(...)에는 최대 1,000개까지 파라미터가 들어갈 수 있다고 한다.

그래서 1,000개씩 나누어서 여러번 호출했다. 검색을 해보니 DB에 함수를 만들고 어쩌고저쩌고 해서 가능하다고 한다. 하지만 이 데이터베이스에 나는 select 말고는 아무 권한이 없다. 그래서 그냥 여러번 호출했다.

해결

Lists.partition(list, n)

Guava 라이브러리를 사용하면 된다고 한다. 하지만 내부망이라서 좌절했다. 그래도 혹시나 싶어서 Lists. 까지 입력하고 자동완성을 켜봤더니 뭔가 나온다! 놀랍게도 이 프로젝트 라이브러리에 guava-21.0이 추가되어 있었다.

List<List<String>> lists = Lists.partition(list, 1000);

잘 썼다. 그나저나 구아바가 google common 라이브러리의 이름일 줄이야...

반응형

개발자가 그리는 인스타툰 팔로우하세요!