본문 바로가기
java

List 일정 개수만큼 반복 분할 처리

by ram_ee 2020. 7. 6.

코드를 짜다보면 리스트를 일정개수만큼 자르고 sublist를 가지고 로직을 돌리고 싶을 때가 있다

이 때 코드를 복잡하게 작성할 수도 있고 몇줄만으로 해결할 수 있다

 

첫 번째의 경우 복잡한 코드의 예시다.

단순하게 코드를 짠다고 하면 반복하는 횟수를 구하고 그만큼 for문을 돌리면 되는데 코드가 길어지고 보기싫은 코드가 되는것 같다.

 

import static java.lang.Math.*;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;



    List<String> data= Arrays.asList("test1","test2","test3","test4","test5","test6","test7","test8");

    int limit = 3;

    int repeat = data.size() % limit != 0 ? data.size()  / limit + 1 : data.size()  / limit;



    for(int id = 0; id < repeat; id++){

        if (id != (repeat - 1)) {

            System.out.println(new ArrayList<>(data.subList(id * limit, (id + 1) * limit)));

        } else {

            System.out.println(new ArrayList<>(data.subList(id * limit, data.size())));

        }

    }

 

두 번째 경우는 4줄만으로 동일한 결과를 낼 수 있다

for문에 limit만큼 더해서 따로 repeat라는 변수를 없앨 수 있고

min함수를 활용하여 if문을 없앨 수 있다.

 

 

  List<String> data=Arrays.asList("test1","test2","test3","test4","test5","test6","test7","test8");

    int limit = 3;

    for(int id = 0; id < data.size(); id += limit){

        System.out.println(new ArrayList<>(data.subList(id, min(id + limit, data.size()))));

    }

'java' 카테고리의 다른 글

java8 lambda, stream(람다,스트림) 란? 장점, 단점?  (0) 2021.08.29

댓글