on
Lists 의 partition 메소드 사용법
Lists 의 partition 메소드 사용법
728x90
728x90
안녕하세요 ! 오늘은 List를 각각 쪼개서 사용할 수 있는 partition 메소드를 간단히 알아보려 합니다.
이전의 자바에서는 아래와 같이 리스트를 쪼개서 사용했습니다.
예를 들어 101개의 아이템이 담겨 있는 리스트의 경우 20개씩 분배해서 사용을 하기 위해서는 아래와 같이 작성했습니다.
public List divided(List list) { List res = new ArrayList<>(); if(list.size() > 100) { res.add(list.subList(0, 20)); res.add(list.subList(20, 40)); res.add(list.subList(40, 60)); res.add(list.subList(60, 80)); res.add(list.subList(80, 100)); res.add(list.subList(100, list.size()); } else if(list.size() > 80) { res.add(list.subList(0, 20)); res.add(list.subList(20, 40)); res.add(list.subList(40, 60)); res.add(list.subList(60, 80)); res.add(list.subList(80, list.size()); } else if(list.size() > 60) { ... } return res; }
하지만 이렇게 작성하는것보다 foreach 문을 사용하면 더 효율적일 것입니다.
public List divided(List list) { List res = new ArrayList<>(); if(list.size() > 100) { for(int i=0; i<=list.size()/20; i++) { res.add(list.subList(i*20, (i+1)*20)); } } else if(list.size() > 80) { ... } ... return res; }
이렇게 되면 가독성면에서도 많이 떨어지는데 이를 보완하기 위해 partition이라는 메소드를 제공해줍니다.
사용 방법은 정말 간단하게도 아래와 같이 한줄로 가능합니다.
final int pagingSize = 20; final List> partition = Lists.partition(tradeSummaryList, pagingSize);
출처: https://stackoverflow.com/questions/12026885/is-there-a-common-java-utility-to-break-a-list-into-batches
728x90
728x90
from http://abbo.tistory.com/219 by ccl(A) rewrite - 2021-11-25 17:28:04