【问题标题】:I want to use index about randomly index in Java我想在Java中使用关于随机索引的索引
【发布时间】:2012-07-10 17:44:26
【问题描述】:

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

这可能吗?

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

例如

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

这可能吗?

【问题讨论】:

  • 你想达到什么目的?您是否尝试根据索引访问 ArrayList 中的随机项目?
  • 那么你有一个包含一些对象的 ArrayList 并且想随机选择其中一个对象吗?
  • @pamiers 查看我回答的编辑部分
  • 对于那些想知道的人:我认为随机,OP 意味着任意,就像在随机访问文件中一样。

标签: java arraylist indexing


【解决方案1】:

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

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

所以你可以写

mymap.put(100,"stackoverflow");

还有

String myString = mymap.get(100);

补充为什么你不能使用数组列表:

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

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

【讨论】:

  • 哦,我明白了.. ArrayList 是不是?无论如何,非常感谢。
【解决方案2】:
int index = (int)(Math.random() * myArray.size());
Object o = myArray.get(index);

【讨论】:

    【解决方案3】:

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

    例如:

    ArrayList<String> arr = new ArrayList<String>();
    
    arr.add("vivek");
    arr.add("vicky");
    
    arr.get(1);
    

    编辑部分:

    如果在小于100的时候直接尝试添加元素,会报如下错误:

    java.lang.IndexOutOfBoundsException:
    

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-10-26
        • 2012-08-06
        • 1970-01-01
        • 2019-01-14
        • 1970-01-01
        • 2013-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多