[英]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.