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

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

如何從文件夾對象列表中遞歸獲取絕對路徑?

如何從文件夾對象列表中遞歸獲取絕對路徑?

人到中年有點甜 2023-10-13 09:56:49
有文件夾對象列表,我需要將它們連接到絕對路徑。每個文件夾都有字段“parentId”(可為空)和“orderNumber”,例如:class Folder {    folderId;    desc;    parentId;    orderNumber;}因此,如果 ParentId == null -> 文件夾是絕對路徑中的第一個文件夾,如果不是 -> 我們應該獲取父文件夾,依此類推。我就是這樣做的,也許有更簡單的方法?public static void main(String[] args) {        List<Folder> list = new ArrayList<Folder>();        list.add(new Folder(1, null, "root1"));        list.add(new Folder(3, 2, "child2"));        list.add(new Folder(2, 1, "child1"));        list.add(new Folder(5, 4, "child4"));        list.add(new Folder(6, null, "root2"));        list.add(new Folder(4, 3, "child3"));        Integer fromId = 5;        String path = getAbsolutePath(list, getFolderById(list, fromId));        System.out.println(path);    }    public static String getAbsolutePath(List<Folder> list, Folder folder) {        String path = "";        Integer parentId = folder.getParentId();        if (parentId != null) {            Folder parent = getFolderById(list, parentId);            path += getAbsolutePath(list, parent) + "/";        }        path += folder.getDesc();        return path;    }    public static Folder getFolderById(List<Folder> list, Integer folderId) {        return list.stream().filter(row -> row.getId() == folderId).findFirst().get();    }Output: root1/child1/child2/child3/child4更新:public static void main(String[] args) {        List<Folder> list = new ArrayList<Folder>();        list.add(new Folder(1, null, "root1"));        list.add(new Folder(3, 2, "child2"));        list.add(new Folder(2, 1, "child1"));        list.add(new Folder(5, 4, "child4"));        list.add(new Folder(6, null, "root2"));        list.add(new Folder(4, 3, "child3"));        Map<Integer, Folder> folderMap = list.stream().collect(Collectors.toMap(                Folder::getId, folder -> folder        ));        Integer fromId = 5;        String path = getAbsolutePath(folderMap, folderMap.get(fromId));        System.out.println(path);    }
查看完整描述

1 回答

?
DIEA

TA貢獻1820條經(jīng)驗 獲得超3個贊

首先,您的代碼看起來不錯。它編譯,它解決了問題,并且它可能不會成為性能瓶頸(除非有很多文件夾)。然而,這對你尋找改進的方法有好處。

為了提高一點效率,我對文件夾進行了預處理,這樣我就不必每次都遍歷整個列表來通過其 ID 查找父級。只需將文件夾放在 a 中Map<Integer, Folder>(使用 ID 作為鍵),這樣就可以輕松快速地通過 id 找到父文件夾。

為了提高可讀性,我還將遞歸替換為簡單的循環(huán)。它將更方便查看、更易于調(diào)試,甚至性能可能更高。


查看完整回答
反對 回復 2023-10-13
  • 1 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號