코드를 짜다보면 리스트를 일정개수만큼 자르고 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 |
|---|
댓글