簡體   English   中英

如何在特定數組列表中交換2個特定字母?

[英]How do i swap 2 particular letters in a particular array list?

如您所知,英語字母表的前6個字母是a, b, c, d, e, f 我想交換(即切換)第二個字母b和第五個字母e。 換句話說,我的目標是在執行代碼后,我的編譯器將輸出以下內容: a, e, c, d, b,f

當我用Google搜索交換數組列表中的內容時,我一直在查找包含collections.swap的示例。在課堂上,我們沒有學到這一點。 我要求您不要在答案中包含該內容。 以下兩行代碼是我們提交的代碼中應該包含的東西的非常簡單的示例。 第一個示例是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做我想做的事情(請參閱第一段。)如果可能的話,請使您的代碼看起來盡可能接近錯誤的代碼,但是我當然希望它是正確的。

使用List.set而不是在swap方法中添加,請參見: Java ArrayList在特定索引處替換

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

使用內置的Collections.swap

更換

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

Collections.swap(myList, i , j);

加(E e)

將指定的元素追加到此列表的末尾(可選操作)。

add(int index,E元素)

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

set(int index,E元素)

用指定的元素替換此列表中指定位置的元素(可選操作)。

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

如果要使用頭寸交換,可以使用以下方法:

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 ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM