【问题标题】:Use optional index with ArrayList - is it possible?使用 ArrayList 的可选索引 - 可能吗?
【发布时间】:2015-02-23 16:25:28
【问题描述】:

我是 Android 和 Java 开发的新手...所以我的问题可能会被混淆或不正常 :) 是否可以创建一个 ArrayList 或任何我提供索引值的集合?

例子:

ArrayList<String> list = new ArrayList<String>();
list.add(3, "Item1");
list.add(10, "Item2");

当我尝试使用它时,我收到一条异常消息:IndexOutOfBounds... 我想将我的 ArrayList(集合)添加到 Android ArrayAdapter...

所以!是否可以制作带有可选索引的集合并且能够添加android ArrayAdapter?

感谢帮助!

【问题讨论】:

  • 为什么要按索引而不是按添加元素的顺序添加?

标签: java android arraylist collections android-arrayadapter


【解决方案1】:

您可以将元素添加到 ArrayList 中的特定位置,但前提是该操作之前 ArrayList 的大小大于或等于您指定的索引。这意味着 ArrayList 可以没有间隙。如果索引 0,1,2 尚未被占用,则不能将元素添加到索引号 3。

因此,list.size() 应至少为 3 以使 list.add(3, "Item1"); 有效。以这种方式向 ArrayList 添加元素会增加列表中从给定索引开始的所有元素的索引。

【讨论】:

    【解决方案2】:

    使用HashMap,应该可以解决你的问题 http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

    【讨论】:

      【解决方案3】:

      您可以创建自己的支持此功能的 List 实现:

      public class SparseArrayList<E> extends ArrayList<E> {
      
          @Override
          public E set(int index, E element) {
              while (size() <= index) add(null);
              return super.set(index, element);
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-03
        • 2015-06-27
        • 2015-10-24
        • 2011-10-12
        • 2015-10-14
        • 2013-03-07
        • 1970-01-01
        • 2013-09-01
        • 2014-11-20
        相关资源
        最近更新 更多