【问题标题】:How do i swap 2 particular letters in a particular array list?如何交换特定数组列表中的 2 个特定字母?
【发布时间】:2018-03-01 03:40:15
【问题描述】:

如您所知,英文字母的前 6 个字母是 a, b, c, d, e, f。我想交换(即切换)第二个字母 b 和第五个字母 e。换句话说,我的目标是在代码执行后,我的编译器将打印以下内容:a, e, c, d, b,f

当我在谷歌上搜索关于交换数组列表中的内容时,我一直在寻找包含 collections.swap 的示例。好吧,在课堂上我们没有了解这一点。我要求您不要将其包含在答案中。以下 2 行代码是我们提交的代码中应该包含的内容的非常简单的示例。第一个例子是public static void swap(int i, int j, ArrayList<String> myList). 第二个例子是void swap(int i, int j, ArrayList myList)

教授并不完全希望我们从头开始编写这段代码。她希望我们修复她手头给我们的代码,告诉我们我们需要为这项任务做些什么。 这是错误的代码:

import java.util.ArrayList;

public class abc{


public static void main(String[]args){

  ArrayList<String> myList= new ArrayList();
  myList.add("a");
  myList.add("b");
  myList.add("c");
  myList.add("d");
  myList.add("e");
  myList.add("f");

  swap(1,4,myList); 
  System.out.println(myList);
} 

public static void swap(int i, int j, ArrayList<String> myList) {
  String temp = myList.get(i);
  myList.add(i, myList.get(j));
  myList.add(j, temp);
}

(我试图给它一个灰色的背景,就像代码应该看起来的样子,但结果不是那样。)

此代码打印[a, e, b, c, b, d, e, f],但我写的第一段解释了我要打印的内容。我花了很长时间试图让它工作,但我做不到。请帮助我让 Jgrasp 做我想做的事情(请参阅第一段。)如果可能,请让您的代码看起来尽可能接近错误的代码,但我当然希望它是正确的。

【问题讨论】:

标签: java arraylist


【解决方案1】:

在您的交换方法中使用 List.set 而不是 add,请参阅:Java ArrayList replace at specific index

public static void swap(int i, int j, ArrayList<String> myList) {
  String temp = myList.get(i);
  myList.set(i, myList.get(j));
  myList.set(j, temp);
}

【讨论】:

  • 是的,但请解释你的答案:为什么 OP 做错了,这是做什么的?
【解决方案2】:

如果你想使用位置交换,你可以使用以下:

import java.util.Collections;

ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");


// swapping
Collections.swap(list, 1, 3);

这会将第一个元素 (b) 与第三个元素 (d) 交换为 [ a, d, c, b, e ]

【讨论】:

    【解决方案3】:

    添加(E e)

    将指定元素附加到此列表的末尾(可选 操作)。

    add(int index, E element)

    在此列表中的指定位置插入指定元素 (可选操作)。

    set(int index, E element)

    将此列表中指定位置的元素替换为 指定元素(可选操作)。

        import java.util.ArrayList;
    
        public class abc{
    
    
        public static void main(String[]args){
    
          ArrayList<String> myList= new ArrayList();
          myList.add("a");
          myList.add("b");
          myList.add("c");
          myList.add("d");
          myList.add("e");
          myList.add("f");
    
          swap(1,4,myList); 
          System.out.println(myList);
        } 
    
        public static void swap(int i, int j, ArrayList<String> myList) {
          String temp = myList.get(i);
          myList.set(i, myList.get(j));
          myList.set(j, temp);
        }
    }
    

    【讨论】:

      【解决方案4】:

      使用内置的Collections.swap

      替换

      String temp = myList.get(i);
      myList.add(i, myList.get(j));
      myList.add(j, temp);
      

      Collections.swap(myList, i , j);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-17
        • 1970-01-01
        • 1970-01-01
        • 2011-01-29
        • 1970-01-01
        • 1970-01-01
        • 2020-02-21
        • 2017-10-20
        相关资源
        最近更新 更多