如何将字符串从一个索引交换到另一个索引?

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;
   }
}

建议

请阅读数组和集合操作的基础知识

假设

输入将不包含重复项

方法

  1. 使用indexOf获取元素的索引
  2. 删除两个元素(先是大索引,然后是小索引)
  3. 先选择较低的索引值插入替换元素
  4. 然后插入较高的索引值(确保检查 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
  }
  

如果 pq 是给定数组列表中的有效索引,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);
   }
}