2012-07-11 46 views
3

我使用Java。當我在Java中使用ArrayList時。如果我隨機訪問索引號。我想使用關於Java中隨機索引的索引

這是可行嗎?

如果這不可行。我應該怎麼做?

例如

ArrayList<String> al = new ArrayList<String>(); 
al.add(100,"stackoverflow"); 

這是更多鈔票?

+2

你想達到什麼目的?你是否試圖根據其索引訪問'ArrayList'中的一個隨機項目? – radimpe 2012-07-11 06:48:32

+2

你到底在問什麼? – Brad 2012-07-11 06:48:36

+0

那麼你有一個包含一些對象的ArrayList,並且想要隨機選擇一個對象? – Wernsey 2012-07-11 06:49:24

回答

6

你似乎需要的不是的ArrayList,但整數和字符串之間的映射:

HashMap<Integer,String> mymap = new HashMap<Integer,String>(); 

所以你可以寫

mymap.put(100,"stackoverflow"); 

而且

String myString = mymap.get(100); 

添加到爲什麼不能使用數組列表:

當您首次初始化ArrayList時,大小爲零。嘗試在大於索引大小的索引處添加時,仍會像數組一樣拋出IndexOutOfBounds異常。 ArrayList的好處是,如果大小填滿,它將動態分配更多的內存。

此外,即使您努力管理大小以避免錯誤,數組對於「稀疏數組」效率也不高。

+0

哦,我明白了.. ArrayList不是?無論如何,非常感謝。 – pamiers 2012-07-11 06:56:57

1
int index = (int)(Math.random() * myArray.size()); 
Object o = myArray.get(index); 
0

雅...你可以.. ArrayList中給出了很大的靈活性,如刪除,添加indexOf..etc ..

如:

ArrayList<String> arr = new ArrayList<String>(); 

arr.add("vivek"); 
arr.add("vicky"); 

arr.get(1); 

編輯部分:

如果直接嘗試將元素添加到1當尺寸小於00þ,您將收到以下錯誤:

java.lang.IndexOutOfBoundsException: 
0

Is this posible?

是你can.Like下面

List<String> list=new ArrayList<String>(); 

    for(int i=0;i <10;i++) 
    { 
     list.add(i,new Integer(i).toString()); 
    } 

    System.out.println(list.get(5)); 

如果你想使用隨機數,那麼你應該生成號碼,您可以添加到該索引。