例如:一个列表
美国广播公司
给定C,切换到
卡德
请注意,数组大小将更改,某些项可能会在运行时删除
Collections.swap(url, url.indexOf(itemToMove), 0);
该语句不起作用,因为它输出CBADE而不是CABDE,如何解决呢?
谢谢。
Answers:
您想要的是一个非常昂贵的操作ArrayList
。它要求在列表的开头和C
向下的位置之间的每个元素都移位一个。
但是,如果您确实想要这样做:
int index = url.indexOf(itemToMove);
url.remove(index);
url.add(0, itemToMove);
如果这是您的常用操作,而随机访问的频率相对较低,则可以考虑切换到另一个List
实现LinkedList
。如果您如此担心元素的顺序,则还应该考虑列表是否完全是正确的数据结构。
做这个:
ArraylistObj.remove(object);
ArrayListObj.add(position, Object);
根据您的代码使用此:
url.remove("C");
url.add(0,"C");
此代码将允许您增加列表的大小,并在不影响列表顺序的情况下插入元素
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);
}
假设您有一个数组:
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"}
最终,我们实现了目标。