문제

다음 배열 목록을 참조하십시오.

List<Integer> values = new ArrayList<Integer>();
values.add(0);
values.add(1);
values.add(2);
values.add(3);
values.add(4);
values.add(5);
values.add(6);

그래서 우리는 다음과 같습니다.

integerList.size(); // outputs 7 elements

나는 보여줄 필요가있다 구글 차트 다음과 같이 :

http://chart.apis.google.com/chart?chs=300x200&chd=t:60,-1,80,60,35&cht=bvg&chbh=20,4,20&chco=4c5f2b,Bed730,323c19&chxt=y&chxr=0 , 0,500

그 값을 생성하기 위해, 나는 단지 전화합니다

StringUtils.join(values, ","); // outputs 0,1,2,3,4,5,6

발생합니다 그것은 최대 지원을합니다 1000 픽셀 너비. 따라서 값이 많으면 다른 차트를 생성하기 위해 Arraylist를 다른 Arraylist로 나누어야합니다. 같은 것 :

Integer targetSize = 3; // And suppose each target ArrayList has size equal to 3

// ANSWER GOES HERE
List<List<Integer>> output = SomeHelper.split(values, targetSize);

목표를 달성하기 위해 어떤 도우미를 사용해야합니까?

도움이 되었습니까?

해결책

Google 수집이 있습니다 Lists.Partition (). 각 하위 목록의 크기를 제공합니다.

다른 팁

시작하려면 찾을 수 있습니다 List#subList() 유용한. 기본 예는 다음과 같습니다.

public static void main(String... args) {
    List<Integer> list = new ArrayList<Integer>();
    list.add(0);
    list.add(1);
    list.add(2);
    list.add(3);
    list.add(4);
    list.add(5);
    list.add(6);

    int targetSize = 3;
    List<List<Integer>> lists = split(list, targetSize);
    System.out.println(lists); // [[0, 1, 2], [3, 4, 5], [6]]
}

public static <T extends Object> List<List<T>> split(List<T> list, int targetSize) {
    List<List<T>> lists = new ArrayList<List<T>>();
    for (int i = 0; i < list.size(); i += targetSize) {
        lists.add(list.subList(i, Math.min(i + targetSize, list.size())));
    }
    return lists;
}

내가 사용하지 않았다는 점에 유의하십시오 splittedInto 그것은 그것과 함께 큰 의미가 없기 때문에 targetSize.

아파치 커먼즈 컬렉션 4 a 분할 방법의 메소드 ListUtils 수업. 작동 방식은 다음과 같습니다.

import org.apache.commons.collections4.ListUtils;
...

int targetSize = 3;
List<Integer> values = ...
List<List<Integer>> output = ListUtils.partition(values, targetSize);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top