2014-03-13 41 views
0

我有这样的程序:拆分的ArrayList到根据用户输入多的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中分成不同阵列列表或阵列。 例如,小= 100,配有= 50,大= 10应当主要数组列表分成100米小的ArrayLists每个大小为10,50 MED的ArrayLists每个尺寸30和10周大的ArrayLists每个尺寸50. 的后分割的,我想要将一些属性分配给子元素中的元素。我不确定它应该是数组列表还是其他数组。

+0

100个小阵列的大小,50中等,...固定为10,30,...?或者他们是基于小,中等和大的输入来确定的? – BassT

+0

现在我已经保持它的固定。如果我得到这个东西的工作,我会尝试做它们像动态范围或东西 –

回答

2

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

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); 

将让你阵列的列表。

+0

我可以知道count变量在做什么吗?也为中等大小的列表..其中每个列表的大小为30,我想要40个这样的列表,那么它将像splitAndReturn(节点,30).subList(0,40)? –

+0

我收到IndexOutofBoundsException在行列表 small = numbers.subList(i,numbers.size()+ size); –

+0

这是一个错误,谢谢你让我知道。什么错误 – Dileep

0

那么简单的事情就是循环遍历列表并相应地拆分它们。 考虑你的榜样,

小= 100,中值= 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. 
} 
+0

对不起,但我不明白你是什么意思的复制数组值? –

+0

创建列表当前'small'内环外(说'smallList')并分配'smallList.add(list.get(J))' – anirudh

+0

您也可以通过列表循环和使用'子列表(INT的fromIndex ,int toIndex)'将该值复制到子列表中。 – anirudh