2

次の ArrayList を参照してください。

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

次のようにGoogleチャートを表示する必要があります。

http://chart.apis.google.com/chart?chs=300x200&chd=t:60,-1,80,60,70,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);

目標を達成するには、どのヘルパーを使用すればよいですか?

4

3 に答える 3

15

google-collections にはLists.partition()があります。各サブリストのサイズを指定します。

于 2009-12-15T20:49:23.563 に答える
12

まず、役に立つかもしれません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

于 2009-12-15T20:41:15.760 に答える