3

我使用Java。当我在 Java 中使用 ArrayList 时。如果我随机访问索引号。

这可能吗?

如果这是不可能的。我应该怎么做?

例如

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

这可能吗?

4

4 回答 4

6

您似乎需要的不是 arrayList 而是整数和字符串之间的映射:

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

所以你可以写

mymap.put(100,"stackoverflow");

String myString = mymap.get(100);

添加为什么不能使用数组列表:

首次初始化 ArrayList 时,大小为零。尝试在大于大小的索引处添加仍然会引发 IndexOutOfBounds 异常,就像数组一样。ArrayList 的好处是它会在大小填满时动态分配更多内存。

此外,即使您努力管理大小以避免错误,数组对于“稀疏数组”也不是有效的。

于 2012-07-11T06:50:08.293 回答
1
int index = (int)(Math.random() * myArray.size());
Object o = myArray.get(index);
于 2012-07-11T06:48:29.943 回答
0

是的...你可以.. ArrayList 提供了很多灵活性,例如删除、添加、indexOf..等。

例如:

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

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

arr.get(1);

编辑部分:

如果直接尝试在第 100 个元素的大小小于该值时添加元素,则会出现以下错误:

java.lang.IndexOutOfBoundsException:
于 2012-07-11T06:49:00.380 回答
0

Is this posible?

是的,你可以。如下所示

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

如果你想使用随机数,那么你应该生成数字,你可以添加到该索引中。

于 2012-07-11T06:56:45.573 回答