簡體   English   中英

在 ArrayList 中的 2 個元素之間交換

[英]Swapping between 2 element in ArrayList

我是 arrayList 的新手,現在我遇到了輸出問題。 它要求我將 String Owner 中的第二個字符與其他字符進行比較並按降序排序。 我嘗試使用變量 temp1 交換其中的 2 個。

運行前的列表: (A8,1) (B1,2) (C7,3) (D2,4) (E6,5) (F3,6)

但我的輸出是: (A8,1) (B1,2) (D2,4) (F3,6) (E6,5) (C7,3) (不正確)

@Override
public void f3(List<Cala> list) {
    for (int i = 0; i < list.size(); i++) {
        char max = list.get(i).getOwner().charAt(1);
        for (int j = 1; j < list.size(); j++) {
            char temp = list.get(j).getOwner().charAt(1);
            if (max < temp) {
                Cala temp1 = list.get(i);
                list.set(i, list.get(j));
                list.set(j, temp1);
            }
        }
    }
}

請幫我看看這是怎么回事:<謝謝你們

這是我的班卡拉。 我無法訪問 Main 類,因為 Main 的文件擴展名是 Main.class

public class Cala {
    private String owner;
    private int price;

    public Cala(){
        owner = "";
        price = 0;
    }

    public Cala(String owner, int price) {
        this.owner = owner;
        this.price = price;
    }

    public String getOwner() {
        return owner;
    }

    public int getPrice() {
        return price;
    }

    public void setOwner(String owner) {
        this.owner = owner;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return  "("+ owner + "," + price +")" ;
    }
}

我不確定變量名和所有內容,但這就是我想出的

for(int i = 0; i < arrayList.size(); i++){
int temp = Integer.parseInt(arrayList.get(i).substring(1,2);
for(int j = 1; j < arrayList.size(); j++){
int temp1 = Integer.parseInt(arrayList.get(j).substring(1,2);
if(j > i){
arrayList.swap(i, j);

我要嘗試的主要事情可能是 parseInt,這段代碼可能有很多問題,但這是我要做的基線

我了解您想使用 冒泡排序算法按owner中的數字對Cala對象列表進行排序。 以下代碼執行此操作:

import java.util.ArrayList;
import java.util.List;

public class Cala {
    private String owner;
    private int price;

    public Cala() {
        this("", 0);
    }

    public Cala(String owner, int price) {
        this.owner = owner;
        this.price = price;
    }

    public String getOwner() {
        return owner;
    }

    public int getPrice() {
        return price;
    }

    public void setOwner(String owner) {
        this.owner = owner;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "(" + owner + "," + price + ")";
    }

    private static int getDigit(Cala cala) {
        if (cala != null) {
            String owner = cala.getOwner();
            if (owner.length() > 1) {
                char digit = owner.charAt(1);
                return digit - '0';
            }
            else {
                return 0;
            }
        }
        else {
            return 0;
        }
    }

    public static void main(String[] args) {
        List<Cala> list = new ArrayList<>();
        list.add(new Cala("A8",1));
        list.add(new Cala("B1",2));
        list.add(new Cala("C7",3));
        list.add(new Cala("D2",4));
        list.add(new Cala("E6",5));
        list.add(new Cala("F3",6));
        System.out.println("Before: " + list);
        int len = list.size();
        for (int i = 0; i < len - 1; i++) {
            for (int j = 0; j < len - i - 1; j++) {
                if (getDigit(list.get(j + 1)) < getDigit(list.get(j))) {
                    Cala swap = list.get(j);
                    list.set(j, list.get(j + 1));
                    list.set(j+1, swap);
                }
            }
        }
        System.out.println(" After: " + list);
    }
}

運行上面的代碼會產生以下輸出:

Before: [(A8,1), (B1,2), (C7,3), (D2,4), (E6,5), (F3,6)]
 After: [(B1,2), (D2,4), (F3,6), (E6,5), (C7,3), (A8,1)]

暫無
暫無

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

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