更新ArrayList中的数据索引

时间:2016-05-25 09:36:15

标签: java arraylist

我有ArrayList<String>长度4,如下所示 -

{"ABC","DEF","GHI","JKL"}

在上面的ArrayList index数据ABC0,数据DEF的索引为1,依此类推。现在,我们需要假设我们index的数据ABC0更改为2ArrayList如下所示

{"DEF","GHI","ABC","JKL"}

我再次将ArrayList数据ndex的{​​{1}}从GHI更改为1我的数组如下所示

4

在上面的讨论中,我想知道当我更改单个数据的索引时,我们如何获得另一个数据的索引。我希望你能理解我的问题。

我在android中有{"DEF","ABC","JKL","GHI"} 有拖放行。将一行从位置0拖放到3时,另一行的位置将会改变。我们如何检索另一行位置。

4 个答案:

答案 0 :(得分:0)

使用indexOf方法。

  

返回此列表中第一次出现的指定元素的索引,如果此列表不包含该元素,则返回-1。

int indexOfAbd = yourList.indexOf("ABD");

答案 1 :(得分:0)

理想情况下,您应该使用LinkedList以及何时需要修改列表

  1. 首先将初始索引的元素存储在temp变量
  2. 从列表中删除它。remove(int index)
  3. add(int index, E element)与新索引一起使用。

答案 2 :(得分:0)

假设我正确理解了您的问题,您希望在删除元素并将其添加到其他位置时自动跟踪现有数组元素的索引。

E.g。 [A, B, C, D]的索引为[A:0, B:1, C:2, D:3]。现在您要删除A并在位置3再次插入[B, C, A, D]。这会产生[A:2, B:0, C:1, D:3]

如果这正确地解释了你的问题,那么不,在删除和插入元素时,没有自动的方法来更新现有元素的索引。

请注意,indexOf(x)会再次搜索列表中的{em>第一次次x。如果您愿意为定期搜索支付费用,并且如果您的元素是唯一的,这可能会对您有所帮助。

答案 3 :(得分:0)

更新索引本身没有多大意义:索引定义为数组中项的位置。但你可以:

  • 在ArrayList中找到一个项目:int indexOf(E item)
  • 从ArrayList中删除项目:E remove(int index)boolean remove(E item)
  • 在ArrayList中的给定位置插入一个项目:void add(int index, E item)

如果我正确理解了您的问题,您想要做的事情可能如下:

boolean changeIndex(String item, int index, List<String> lst) {
    boolean cr = lst.remove(item);
    if (cr == false) {
        return cr;
    }
    lst.add(index, item);
    return true;
}

如果false中没有该项,则此代码返回lst,如果索引为负(严格)或大于(或等于)数组的大小,则返回IndexOutOfBoundsException

顺便说一下,上面的代码在任何可修改的列表上都是一样的,例如ArrayList或LinkedList - 对于这样的操作,LinkedList应该更合适