第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用冒泡排序和可比較的數(shù)組列表對(duì)矩形區(qū)域進(jìn)行排序

使用冒泡排序和可比較的數(shù)組列表對(duì)矩形區(qū)域進(jìn)行排序

HUH函數(shù) 2024-01-28 17:04:19
我正在構(gòu)建之前的程序,該程序使用排序算法對(duì)數(shù)組中的整數(shù)進(jìn)行排序。我現(xiàn)在的任務(wù)是創(chuàng)建一個(gè)矩形的 ArrayList,創(chuàng)建一個(gè)擴(kuò)展 Comparable 接口的 Rectangle 類,并在我的排序方法中實(shí)現(xiàn)泛型。最后,程序需要對(duì)給定的 10 個(gè)不同矩形的面積值進(jìn)行計(jì)算和排序。我遇到的問題是,我不確定如何修改排序算法來實(shí)現(xiàn)泛型,并使用我在 Rectangle 類中創(chuàng)建的compareTo/方法。getArea我對(duì)所有這些概念都相當(dāng)陌生,所以我的理解是有限的。以下是我如何創(chuàng)建 10 個(gè)矩形的 ArrayList 的片段(按降序值排列):public static void main(String[] args) {    ArrayList<Rectangle> list = new ArrayList<>();    for (int i=10;i>=1;i--) {        Rectangle rectangle = new Rectangle((i+5)*2,(i+7)*6);        list.add(rectangle);    }    ...}這是我的 Rectangle 類,它擴(kuò)展了 Comparable 接口并具有重寫的 CompareTo 方法:class Rectangle implements Comparable<Rectangle> {    double width=1;    double height=1;    public Rectangle() { }    public Rectangle(double recWidth, double recHeight) {        this.width = recWidth;        this.height = recHeight;    }    public double getWidth() {        return width;    }    public void setWidth(double width) {        this.width = width;    }    public double getHeight() {        return height;    }    public void setHeight(double height) {        this.height = height;    }    public double getArea() {        return width * height;    }    @Override    public int compareTo(Rectangle r) {        if (getArea() > r.getArea()) {            return 1;        }        else if (getArea()<r.getArea()) {            return -1;        }        else {            return 0;        }       }    ...}這是我目前的冒泡排序方法,該方法不再起作用。public static <R extends Comparable <Rectangle>> void bubbleSort(ArrayList<Rectangle> list) {    for (int k = 1; k < list.size();k++) {        for (int i = 0; i <list.size()-k; i++) {                R elem = list.getArea();             R elem2 = list.getArea(i+1);             if (elem.compareTo(elem2) >= 1) {                 R temp = list.get(i);                     list.set(i, list.get(i+1));                  list.set(i+1, temp);              }         }         printList(list);    }
查看完整描述

1 回答

?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊

getArea()您正在嘗試調(diào)用對(duì)象的方法ArrayList<>。然而,該類ArrayList<>沒有這樣的方法。無法撥打電話

R elem = list.getArea();

當(dāng)list是 類型時(shí)ArrayList<>。

實(shí)際上,您根本不需要調(diào)用getArea()冒泡排序方法。冒泡排序方法只關(guān)心列表中是否包含實(shí)現(xiàn)該Comparable接口的對(duì)象。您的方法聲明應(yīng)更改為:

public static <R extends Comparable <R>> void bubbleSort(ArrayList<R> list)

這樣你就可以說:“列表必須包含通用類型的對(duì)象R,其中類R實(shí)現(xiàn)了Comparable<R>接口”。當(dāng)您在腦海中替換R為您的Rectangle班級(jí)時(shí),您會(huì)發(fā)現(xiàn)您的班級(jí)Rectangle implements Comparable<Rectangle>符合該要求。

在您的冒泡排序方法中,您不再使用該getArea()方法(您不能),而只能使用來自 的方法以及接口提供的ArrayList<>方法。您的代碼應(yīng)如下所示:compareTo()Comparable<>

public static <R extends Comparable <R>> void bubbleSort(ArrayList<R> list) {


    for (int k = 1; k < list.size();k++) {

        for (int i = 0; i <list.size()-k; i++) {   


             R elem = list.get(i);

             R elem2 = list.get(i+1);


             if (elem.compareTo(elem2) > 0) {

                 list.set(i, elem2); 

                 list.set(i+1, elem); 

             }

         }

         printList(list);


    }

}

您正在使用get(i)和get(i+1)來獲取您想要檢查的對(duì)。然后在if()語句中您只需交換位置即可。


查看完整回答
反對(duì) 回復(fù) 2024-01-28
  • 1 回答
  • 0 關(guān)注
  • 123 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)