2015-12-06 18 views
-3

我試圖分裂一個ArrayList名爲mainarray到其他兩個ArrayList中的我怎麼能分裂一個ArrayList <String>成2以上的ArrayList <String>以1:5的比例

  • ArrayList中稱爲陣列1
  • ArrayList的所謂數組2

麥narray正是 12個值:

  • 「1」
  • 「2」
  • 「3」
  • ...

我怎樣才能將它們分割了這麼array1array2中有10個隨機值

謝謝你的幫助!

+0

目前還不清楚。你有10個值嗎? –

+0

是的,正好是10. – Freakey

+0

也許你應該顯示一些代碼:) –

回答

1

只需從一個列表中獲取兩個隨機值並添加到另一個列表中。

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

但我想在array1中有2個值,在array2中有10個值。 – Freakey

+0

所以只是得到隨機值,不要刪除。 – VDanyliuk

1

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

如果您希望比例爲1:5,則會有6個總分部。所以請使用兩個for環路:一個的範圍爲1至size/6,另一個的範圍爲(size/6)+1至6 *(size/6)

在您的例子有您的陣列中12個元素,因此這種方法會給你1和2中的array1和3至12中的array2

+0

非常感謝!我會嘗試的。 – Freakey

+1

或者更確切地說是0-1和2-11,作爲'mainarray'的索引。結果不會是隨機的,但可以調用['Collections.shuffle(mainarray)'](http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#shuffle% 28java.util.List%29),如果它應該保持不變,首先複製'mainarray'。 – Andreas

1

嘗試使用此:
此代碼從ArrayList中選擇numbers選擇2/10在element2在head添加和添加10種元素在tail

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); 
    } 
相關問題