Android:ArrayList 将项目移动到位置 0

Posted

技术标签:

【中文标题】Android:ArrayList 将项目移动到位置 0【英文标题】:Android: ArrayList Move Item to Position 0 【发布时间】:2011-10-25 12:24:54 【问题描述】:

我有一个 ArrayList,我需要确保特定项目位于 0 位置,如果不是,我需要将它移到那里。该项目上有一个isStartItem 布尔值,所以我可以轻松找到我需要在位置0 的特定项目,但是我该如何将它移动到正确的位置?

我假设我需要使用这样的东西:

for(int i=0; i<myArray.size(); i++)    
    if(myArray.get(i).isStartItem())
        Collection.swap(myArray, i, 0);
    

但这似乎不起作用...

【问题讨论】:

“这似乎不起作用”是什么意思。它会产生错误,还是抛出异常,或者根本没有发生交换? 【参考方案1】:

您需要使用Collections 类的swap 方法。 Collections,最后是 s

改变 -

Collection.swap(myArray, i, 0);

到这里——

Collections.swap(myArray, i, 0);

看看this的例子。

Collection 和 Collections 在 Java 中是两个不同的东西。第一个是接口,第二个是类。后者有静态交换方法,但前者没有。

【讨论】:

糟糕...我在输入问题时忘记了 s。 @ryandlf:哦.....那你能告诉我你所说的“似乎不起作用”是什么意思吗? 当将 i 处的元素移动到 0 时,这是否实际上将 0 处的元素移动到 i 处?如果是这样,那么我认为这不是 OP 正在寻找的。我通常只是简单地创建一个新对象来保存 i 处的内容,然后调用 .remove(index) 将其拉出,然后调用 .add(index, object) 索引为 0。 yada yada 真的很高兴得到这个答案,我试图从一小时开始,但它对我不起作用,使用这个对我来说很好【参考方案2】:

我不知道Collection.swap 是什么,但这段代码应该可以工作:

for(int i=0; i<myArray.size(); i++)    
    if(myArray.get(i).isStartItem())
        Collections.swap(myArray, i, 0);
        break;
    

或者你也可以长期做:

for(int i=0; i<myArray.size(); i++)    
    if(myArray.get(i).isStartItem())
        Object thing = myArray.remove(i); // or whatever type is appropriate
        myArray.add(0, thing);
        break;
    

【讨论】:

【参考方案3】:

有两种方法可以将项目移动到 ArrayList 中的所需位置。

1.交换物品

Collections.swap(myArray, i, 0);

--> 此处位置“i”将移至第 0 位,此范围内的所有其他项目将保持原样。

2。移动项目

myArray.add(0,myArray.remove(i))

--> 这里位置“i”的项目将被删除并添加到第 0 个位置。当您在 0 处添加新项目时,这里所有其他项目的位置都会移动。

希望这将有助于您了解交换和移位之间的区别。根据您的要求使用解决方案。

【讨论】:

【参考方案4】:

可以使用Arraylist的set函数。

set(position,object)

【讨论】:

这只会用object 替换arraylist 0 中的任何内容。我认为 OP 不想丢失任何元素,只需重新排序即可。 我确实尝试过这种方法,结果完全按照 Ted 的描述。

以上是关于Android:ArrayList 将项目移动到位置 0的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Android 中 ArrayAdapter 上的 ArrayList 更新项目

在android中将arraylist <String>值插入sqlite

CKEditor - 我可以将文本锁定到位或使文档更大吗?

如何将图像添加到位图

android 怎么将一个类中的arraylist<bitmap>序列化。

Android Studio ListView 项目重力