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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java sort 按字母順序排列的具有層次結構的對象列表

Java sort 按字母順序排列的具有層次結構的對象列表

牛魔王的故事 2022-01-19 09:27:41
我有一個名為Item. Item可以有父母和孩子。每個Item都有以下方法:getParent() --> 返回一個 ItemgetChildren() --> 返回一個 List<Item>isLeaf() --> 返回一個 BooleangetName() --> 返回一個 String層次結構中的每個級別都是建筑工地中的級別,例如級別 1 是 House 1,級別 2 是 Floor 1,級別 3 是 Room,級別 4 是 Window。我有一個List<Item,我需要像這樣對它們進行排序:項目 1(房屋 1 > 樓層 1 > 房間 1 > 浴室)項目 2(房屋 1 > 樓層 1 > 房間 2 > 地下室)項目 3(房屋 1 > 樓層 1 > 房間 2 > 門)項目 4(房屋 1 > 樓層 1 > 房間 2 > 窗戶)項目 5(房屋 1 > 樓層 2 > 房間 1 > 門)我想我需要某種遞歸函數,但我無法想象它必須是怎樣的。我已經研究過在 Java 中對具有層次結構的對象進行排序,但我沒有發(fā)現任何與我的情況類似的東西。如果問題不是 100% 清楚,我將不勝感激任何幫助和抱歉,但很難描述。謝謝。
查看完整描述

2 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

它確實是遞歸的。問題在于,只有兩個節(jié)點處于同一級別時,簡單的遞歸比較才會起作用。


// Same level compare

int compareSameLevel(Item item) {

    int c = 0;

    if (this.getParent != null) {

        c = compare(this.getParent(), item.getParent());

    }

    return (c != 0) ? c : getName().compare(item.getName());

}

但是您可以調整級別以找到一個共同的級別并假設孩子們追隨父母:


// Compare on any level

int compare(Item item) {

    Item thisItem = this;

    int thisLevel = thisItem.level();

    int itemLevel = item.level();


    for (int i = thisLevel; i > itemLevel; i--) {

        thisItem = thisItem.getParent();

    }


    for (int j = itemLevel; j > thisLevel; j--) {

        item = item.getParent();

    }


    int c = compareSameLevel(thisItem, item);


    return c != 0 ? c : (thisLevel > itemLevel ? -1 : 1);

}

這只是給你一個想法。它未經測試或編譯。


查看完整回答
反對 回復 2022-01-19
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

偽代碼:試試這樣


    private static void printChildElements(List<Object> childNodes) {

    for(Object childNode : childNodes) {


        List<Object > childElements = childNode .....;

        if(childElements.size() > 0) {

            printChildElements( childElements);

        }

    }


查看完整回答
反對 回復 2022-01-19
  • 2 回答
  • 0 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號