如何将字符串从一个索引交换到另一个索引?
how to swap a string from one index to a different index?
到目前为止,这是我的代码,我不确定如何获取列表 [fish, chips, sauce, plate]
的索引并将 chips
放在索引 plate
处。
class Names{
ArrayList<String> list;
public Names()
{
list = new ArrayList<String>();
}
/** precondition: p and q represent indexes of existing elements in the list array.
* postcondition: the elements, represented by p and q, have swapped locations.
*/
public void swapNames(int p, int q){
temp = p;
p = q;
q = temp;
}
}
建议
请阅读数组和集合操作的基础知识
假设
输入将不包含重复项
方法
- 使用indexOf获取元素的索引
- 删除两个元素(先是大索引,然后是小索引)
- 先选择较低的索引值插入替换元素
- 然后插入较高的索引值(确保检查 size() 是否为最后一个元素)
解决方案
final String first = "chips"
final String second = "plate"
final int index1 = list.indexOf(first);
final int index2 = list.indexOf(second);
if (index1 < index2) {
list.remove(index2);
list.remove(index1);
list.add(index1, second)
if (index2 == list.size()) {
list.add(first);
} else {
list.insert(index2, first);
}
} else {
// do the reverse
}
如果 p
和 q
是给定数组列表中的有效索引,ArrayList
的方法 get(int i)
and set(int i, E obj)
可用于有效地交换元素:
public void swapNames(int p, int q) {
String temp = list.get(p);
list.set(p, list.get(q));
list.set(q, temp);
}
}
到目前为止,这是我的代码,我不确定如何获取列表 [fish, chips, sauce, plate]
的索引并将 chips
放在索引 plate
处。
class Names{
ArrayList<String> list;
public Names()
{
list = new ArrayList<String>();
}
/** precondition: p and q represent indexes of existing elements in the list array.
* postcondition: the elements, represented by p and q, have swapped locations.
*/
public void swapNames(int p, int q){
temp = p;
p = q;
q = temp;
}
}
建议
请阅读数组和集合操作的基础知识
假设
输入将不包含重复项
方法
- 使用indexOf获取元素的索引
- 删除两个元素(先是大索引,然后是小索引)
- 先选择较低的索引值插入替换元素
- 然后插入较高的索引值(确保检查 size() 是否为最后一个元素)
解决方案
final String first = "chips"
final String second = "plate"
final int index1 = list.indexOf(first);
final int index2 = list.indexOf(second);
if (index1 < index2) {
list.remove(index2);
list.remove(index1);
list.add(index1, second)
if (index2 == list.size()) {
list.add(first);
} else {
list.insert(index2, first);
}
} else {
// do the reverse
}
如果 p
和 q
是给定数组列表中的有效索引,ArrayList
的方法 get(int i)
and set(int i, E obj)
可用于有效地交换元素:
public void swapNames(int p, int q) {
String temp = list.get(p);
list.set(p, list.get(q));
list.set(q, temp);
}
}