Java 如何将数组列表中的特定项移动到第一项
例如:列表 A、B、C、D、E 给定C,切换到 C A B D E 请注意,数组大小将更改,一些项可能会在运行时删除Java 如何将数组列表中的特定项移动到第一项,java,android,collections,arraylist,swap,Java,Android,Collections,Arraylist,Swap,例如:列表 A、B、C、D、E 给定C,切换到 C A B D E 请注意,数组大小将更改,一些项可能会在运行时删除 Collections.swap(url, url.indexOf(itemToMove), 0); 此语句不工作,因为它输出的是C B A D E而不是C A B D E,如何修复它 谢谢 这样做: 删除列表中的元素:ArraylistObj.Remove(object) 添加元素返回到列表中特定位置的:ArrayListObj.Add(位置、对象) 根据您的代码,请使用以下
Collections.swap(url, url.indexOf(itemToMove), 0);
此语句不工作,因为它输出的是C B A D E而不是C A B D E,如何修复它
谢谢 这样做:
ArraylistObj.Remove(object)代码>
ArrayListObj.Add(位置、对象)代码>
url.remove("C");
url.add(0,"C");
您需要的是在
ArrayList
中执行非常昂贵的操作。它需要将列表开头和C
位置之间的每个元素向下移动1
但是,如果您确实想这样做:
int index = url.indexOf(itemToMove);
url.remove(index);
url.add(0, itemToMove);
如果这是一个频繁的操作,并且随机访问较不频繁,您可以考虑切换到另一个<代码>列表>代码>实现,如<代码> Link KistList。如果你非常关心元素的顺序,你也应该考虑一个列表是否是正确的数据结构。 您可以尝试以下方法:
url.remove(itemToMove);
url.add(0, itemToMove);
或者如果url
是LinkedList
:
url.remove(itemToMove);
url.addFirst(itemToMove);
此代码将允许您增加列表的大小,并在不影响列表顺序的情况下插入元素
private void insert(double price){
for(int i = 0; i < keys.size(); i++){
if(price > keys.get(i)){
keys.add(null);
for(int j = keys.size()-1; j > i; j--){
Collections.swap(keys, j, j-1);
}
keys.add(price);
Collections.swap(keys, keys.size()-1, i);
keys.remove(keys.size()-1);
return;
}
}
keys.add(price);
}
private void insert(双倍价格){
对于(int i=0;i关键点。获取(i)){
key.add(null);
对于(int j=keys.size()-1;j>i;j--){
集合。交换(键,j,j-1);
}
键。添加(价格);
Collections.swap(key,key.size()-1,i);
keys.remove(keys.size()-1);
返回;
}
}
键。添加(价格);
}
假设您有一个数组:
String[] arrayOne = new String[]{"A","B","C","D","E"};
现在,您需要将C
放在索引0
中,将C
放在另一个变量中
String characterC = arrayOne[2];
现在按如下方式运行循环:
for (int i = (2 - 1); i >= 0; i--) {
arrayOne[i+1] = arrayOne[i];
}
上面的2
是C
的索引。现在在索引处插入C
,例如0
arrayOne[0] = characterC;
上述循环的结果如下所示:
arrayOne: {"C","A","B","D","E"}
最后,我们实现了我们的目标。另一个解决方案是,继续从
0
切换到indexOf(itemToMove)
这是我的Kotlin版本:
val list = mutableListOf('A', 'B', 'C', 'D', 'E')
(0..list.indexOf('C')).forEach {
Collections.swap(list, 0, it)
}
对不起,我不熟悉Java,但学了一点Kotlin。但是算法是一样的。这不是会增加列表的大小吗?然后使用url从列表中删除元素。删除(“C”);并使用url在零位置添加元素;如果速度是一个标准,那么也许你现在也应该看看@Aditya断开的链接-