我有ArrayList<String>
长度4,如下所示 -
{"ABC","DEF","GHI","JKL"}
在上面的ArrayList
index
数据ABC
为0
,数据DEF
的索引为1
,依此类推。现在,我们需要假设我们index
的数据ABC
从0
更改为2
,ArrayList
如下所示
{"DEF","GHI","ABC","JKL"}
我再次将ArrayList
数据ndex
的{{1}}从GHI
更改为1
我的数组如下所示
4
在上面的讨论中,我想知道当我更改单个数据的索引时,我们如何获得另一个数据的索引。我希望你能理解我的问题。
我在android中有{"DEF","ABC","JKL","GHI"}
有拖放行。将一行从位置0拖放到3时,另一行的位置将会改变。我们如何检索另一行位置。
答案 0 :(得分:0)
答案 1 :(得分:0)
理想情况下,您应该使用LinkedList
以及何时需要修改列表
temp
变量remove(int index)
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)
更新索引本身没有多大意义:索引定义为数组中项的位置。但你可以:
int indexOf(E item)
E remove(int index)
或boolean remove(E item)
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