在ArrayList中的2个元素之间交换



我是arrayList的新手,现在我在输出方面遇到了问题。它要求我将StringOwner中的第二个字符与其他字符进行比较,并按降序排序。我尝试使用一个变量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 +")" ;
}
}

我知道您希望使用气泡排序算法,按照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)]

最新更新