如何将ArrayList <string>拆分为另外2个ArrayList <string>,比例为1:5

时间:2015-12-06 19:22:41

标签: java arraylist

我正在尝试将名为 mainarray 的ArrayList拆分为另外两个ArrayList&#39>

  • 名为 array1
  • 的ArrayList
  • Arraylist称为 array2

主阵列中,我有完全 12个值:

  • &#34; 1&#34;
  • &#34; 2&#34;
  • &#34; 3&#34;
  • ...

如何拆分它们,以便 array1 中有2个随机值, array2 中有10个随机值

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

从一个列表中获取两个随机值并添加到另一个列表中。

Random r = new Random();
list1.add(mainarray.remove(r.nextInt(10)));
list1.add(mainarray.remove(r.nextInt(10)));
list2.addAll(mainarray);

答案 1 :(得分:1)

您可以使用mainarray.size()查找主ArrayList的大小。

如果您希望比率为1:5,则总共有6个分区。所以使用两个for循环:一个范围 1到size / 6 ,另一个范围(size / 6)+1到6 *(size / 6)

在您的示例中,您的数组中有12个元素,因此此方法会在array1中为1和2,在array2中为3到12。

答案 2 :(得分:1)

尝试使用此:
此代码从ArrayList numbers中选择,选择2/10 element2添加到head并在tail添加10个元素:

  public static void main(String[] args) 
  {
   List<Integer> numbers = new ArrayList<Integer>();
   numbers.add(3);
   numbers.add(4);
   numbers.add(5);
   numbers.add(6);
   numbers.add(7);
   numbers.add(55);
   numbers.add(32);
   numbers.add(555);
   numbers.add(1);
   numbers.add(55);

   List<Integer> head = new ArrayList<Integer>();
        List<Integer> tail = new ArrayList<Integer>();
        for(int i = 1; i<=numbers.size(); i++){
            if(i%6==0){
                head.add(numbers.get(i-1));
            }
            else{
                tail.add(numbers.get(i-1));
            }
        }
        System.out.println("head: "+ head); 

        System.out.println("tail: "+tail); 

        System.out.println("numbers: " +numbers); 
     }