根据用户输入将ArrayList拆分为多个ArrayLists

时间:2014-03-13 04:16:10

标签: java arraylist

我有这个程序:

public static void main(String[] args){
    System.out.println("Enter number of nodes");
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    for(int i=0;i<=n;i++)
    {
        nodes.add(i);
    }

    System.out.println(nodes);
    System.out.println("How many subnetworks you want? Enter Small(10), Med(30), Large(50)");
    small = sc.nextInt();
    med = sc.nextInt();
    large = sc.nextInt();
    System.out.println("Small = " + small + "med" + med + "large" + large);

现在取决于小,中,大的值并考虑这些整数的倍数,我想将ArrayList拆分成不同的arraylists或数组。 例如,小= 100,med = 50,大= 10应该将主要的arraylist分成100个小型arraylist,每个大小为10,50个med arraylists,每个大小为30和10个大型arraylists,每个大小为50。  分割后,我想为子元素中的元素分配一些属性。而且我不确定它是否应该是arraylist或array或其他任何东西。

2 个答案:

答案 0 :(得分:3)

您可以使用拆分列表功能。

private static List<List<Integer>> splitAndReturn(List<Integer> numbers,
        int size) {
    List<List<Integer>> smallList = new ArrayList<List<Integer>>();
    int i = 0;
    while (i + size < numbers.size()) {
        smallList.add(numbers.subList(i, i + size));
        i = i + size;
    }
    smallList.add(numbers.subList(i, numbers.size()));
    return smallList;
}

该函数将返回一个数组的arrayList,其中每个原始大小为size。 因此,如果您需要100个大小为10的数组,那么

splitAndReturn(yourList, 10).subList(0, 100);

将为您提供数组列表。

答案 1 :(得分:0)

嗯,简单的事情是遍历列表并相应地拆分它们。 考虑你的例子,

  

小= 100,med = 50,大= 10

首先检查列表是否有足够的值

if (list.size() >= ((small*10)+(med*30)+(large*50))){
    for (int i=0;i<small;i++){
        for(int j=0;j<10;j++){
            //copy array value
        }
    }    
    // do the same for med and large.
}