`

java实现对树形结构(文件夹式)数据数组进行排序

阅读更多
http://www.oschina.net/question/572366_235443?fromerr=kI0toIyF

Folder有如下属性:id,pid(父节点),sequence(同级节点排序依据)
有如下数据:
F1 (1,0,1)
F2 (2,0,2)
F3 (3,4,1)
F4 (4,2,1)
F5 (5,1,1)
F6 (6,1,2)
F7 (7,6,1)
F8 (8,0,3)
树形结构为:
(1,0,1) F1
(5,1,1)      F5

(6,1,2)      F6

(7,6,1)           F7

(2,0,2) F2
(4,2,1)        F4

(3,4,1)           F3
(8,0,3) F8
怎么实现对以上数据以sequence大小为依据进行排序,实现按树形结构输出
    F1、F5、F6、F7、F2、F4、F3、F8


import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class FolderTree
{

    public static void main(String[] args)
    {
        int[] F1 = { 1, 0, 1 };
        int[] F2 = { 2, 0, 2 };
        int[] F3 = { 3, 4, 1 };
        int[] F4 = { 4, 2, 1 };
        int[] F5 = { 5, 1, 1 };
        int[] F6 = { 6, 1, 2 };
        int[] F7 = { 7, 6, 1 };
        int[] F8 = { 8, 0, 3 };
        
        List<int[]> list = new ArrayList<int[]>();
        list.add(F1);
        list.add(F2);
        list.add(F3);
        list.add(F4);
        list.add(F5);
        list.add(F6);
        list.add(F7);
        list.add(F8);
        
        LinkedList<int[]> result = new LinkedList<int[]>();
        LinkedList<int[]> f = sort(list, result, 0);
        for(int i = 0; i < f.size(); i++)
        {
            System.out.print(f.get(i)[0] + ",");
            System.out.print(f.get(i)[1] + ",");
            System.out.println(f.get(i)[2]);
        }
    }

    private static LinkedList<int[]> sort(List<int[]> list , LinkedList<int[]> result, int father)
    {
        List<int[]> temp = new ArrayList<int[]>();
        
        for(int i = 0; i < list.size(); i++)//最高层,临时存放
        {
            if(list.get(i)[1] == father)
            {
                temp.add(list.get(i));
            }
        }
        
        if(temp.size() < 1)
        {
            return result;
        }
        else//递归
        {
            for (int j = 0; j < list.size(); j++) //删除最高层
            {
                if (list.get(j)[1] == father)
                {
                    list.remove(j);
                }
            }
            
            for (int i = 0; i < temp.size() - 1; i++) //对最高层排序
            {
                for (int j = i + 1; j < temp.size(); j++)
                {
                    if (temp.get(i)[2] > temp.get(j)[2])
                    {
                        int [] t = temp.get(i);
                        temp.set(i, temp.get(j));
                        temp.set(j, t);
                    }
                }
            }
            
            for (int i = 0; i < temp.size(); i++)
            {
                result.add(temp.get(i));
                sort(list, result, temp.get(i)[0]);
            }
            return result;
        }
        
    }
}



js算法

function sortTree(records,result,father){
    var temp = [];
    for(var i = 0; i < records.length; i++) {
        var nodeValue = records[i];
        var pId = Number(nodeValue [4]);
        if(pId == father) {
            temp.push(records[i]);
        }
    }
    if(temp.length < 1) {
        return result;
    }else {
        for (var j = 0; j < records.length; j++) {
            if (records[j] == father) {
                var reTemp=[];
                for (var k = 0; k < records.length; k++){
                    if(k!=j){
                        reTemp.push(records[k]);
                    }
                }
                records=reTemp;
            }
        }
        for (var i = 0; i < temp.length; i++) {
            result.push(temp[i]);
            var nodeValue = temp[i];
            var id = Number(nodeValue [0]);
            sortTree(records,result, id);
        }
        return result;
    }
}
分享到:
评论

相关推荐

    netbeans下Java编的图片管理系统,打开图片后实现自动播放功能

    6. 数据结构:可能使用了数组、列表或其他数据结构来存储图片信息,以便于管理和播放。 在进行课程设计时,这样的项目可以帮助学生巩固Java基础知识,了解GUI编程,以及学习如何在实际应用中整合和运用各种Java技术...

    指夹式血氧仪算法及程序

    血氧仪是一种非侵入性的医疗设备,广泛用于监测人体血液中的氧气饱和度,是评估呼吸和...通过学习和研究相关源代码,开发者不仅可以深化对血氧仪技术的理解,还可以在此基础上进行创新和改进,推动医疗设备的技术进步。

    基于ARMCortex-M0内核单片机的指夹式脉搏血氧仪设计与实现.pdf

    指夹式脉搏血氧仪是一种便携式医疗设备,用于非侵入性地测量人体血氧饱和度和脉率。...因此,对Cortex-M0内核单片机的理解和应用,对于设计和实现指夹式脉搏血氧仪以及其他类型的医疗监测设备具有重要的参考价值。

    C8051F007单片机+TL-2728ASR模拟方案设计指夹式血氧仪硬件原理图+PCB文件.zip

    TL-2728ASR是一款专用于血氧测量的模拟前端(AFE)芯片,其内部集成了光电二极管、运算放大器、比较器等组件,能够对光的吸收变化进行精确检测。在指夹式血氧仪中,它与LED光源配合,通过透射或反射方式测量手指中的...

    指夹式脉搏血氧仪的拆解分析

    脉搏血氧仪可以通过无创检测的方式实现对自身脉搏以及血氧浓度的监测,达到及时了解身体健康状况的目的,是不是很神奇呢?那么它是通过什么原理?又是采用什么硬件方案实现的?今天就通过拆解我手上的这个鱼跃指夹式...

    外夹式超声波流量计的优缺点具体表现哪里

    外夹式超声波流量计作为一种先进的流量测量工具,凭借其独特的优势在工业领域中得到了广泛应用。这种流量计采用非接触式的测量方法,无需与被测液体直接接触,避免了因接触引起的磨损和污染,同时不会对流体的流动...

    电子政务-反夹式电源插座.zip

    电子政务,全称为电子政府服务,是利用信息技术和网络通信技术,实现政府公共服务的数字化、网络化和信息化。这一概念的出现,旨在提高政府工作效率,优化公共服务,促进公民参与,以及推动政府信息的公开透明。在...

    电子政务-夹式水平电极架.zip

    “夹式水平电极架”这个特定的硬件设备,可能在电子政务的某个环节中起到关键作用,比如在数据中心的服务器硬件结构中,或者在通信设备的信号传输中。不过,由于信息有限,具体的使用场景和功能需要结合更详细的资料...

    行业资料-交通装置-一种抱夹式叉车夹具.zip

    5. 性能评估和对比:对不同类型的抱夹式叉车夹具进行性能比较,帮助用户选择最合适的设备。 这份资料对于物流、仓储、制造业等相关行业的技术人员、管理者以及设备采购人员来说,都是一份非常有价值的参考资料,...

    行业文档-设计装置-一种夹式书立.zip

    综上所述,这份“行业文档-设计装置-一种夹式书立.zip”压缩包内的PDF文件,应该是一份全面而深入的设计报告,对于理解夹式书立的设计理念、结构和使用具有很高的参考价值。无论是从事相关设计工作,还是对产品设计...

    行业文档-设计装置-笔夹式圆规.zip

    本文将深入探讨笔夹式圆规的设计理念、结构特点以及在实际操作中的使用技巧。 首先,我们要理解什么是笔夹式圆规。笔夹式圆规,顾名思义,是带有笔夹功能的圆规,它不仅具备了传统圆规画圆的基本功能,还能通过笔夹...

    电子政务-可夹式电子灯.zip

    在“电子政务-可夹式电子灯.zip”这个压缩包文件中,我们可以推测其内容可能与电子政务的具体应用案例有关,可能是以一种形象化的“可夹式电子灯”为比喻,探讨如何将电子政务的理念和技术应用于实际工作场景。...

    行业文档-设计装置-张夹式剃须刀.zip

    这一机制源于传统的理发师剪刀,通过两个相对移动的刀片来实现对胡须的切割。其中,一个刀片固定,另一个刀片则在弹簧的驱动下张合,当刀片闭合时,胡须被夹在两片刀之间,然后被切割。这种设计既保证了剃须的效率,...

    基于ADAMS的钳夹式精量穴播器的设计与仿真分析.pdf

    4. 结果分析:仿真完成后,根据动态响应结果进行数据分析,例如评价播种的均匀性和精度,机械结构的稳定性等。 四、知识更新与体系建立 1. 知识更新:随着技术的发展,设计钳夹式精量穴播器和进行ADAMS仿真分析...

    MSP430F415+LCD JXL-5956+SGM3005指夹式血氧仪ALTIUM硬件原理图+PCB工程文件.zip

    MSP430F415+LCD JXL-5956+SGM3005指夹式血氧仪ALTIUM硬件原理图+PCB工程文件,硬件采用4层板设计,大小为48*24mm,包括AD09设计为完整原理图PCB文件,可供学习及设计参考。硬件板主要器件如下: LCD JXL-5956-W LCD ...

    指夹式排种器排种性能试验研究.zip

    4. **数据分析与模型建立**:通过对排种器在不同工况下的性能测试,收集数据进行分析,可以建立数学模型来预测和优化排种性能。这可能涉及到统计学、机器学习算法以及数据可视化技术。 5. **实验设计与测试方法**:...

    电子政务-夹式手电筒.zip

    文件"行业分类-电子政务-夹式手电筒.pdf"可能包含以下几方面的内容: 1. **电子政务的概念与意义**:解释电子政务的基本定义,阐述其在促进政府信息公开、加强公民参与、提高政府服务质量和效率、优化公共资源分配...

    外夹式超声波流量计安装调试方法简述.doc

    外夹式超声波流量计安装调试需要进行详细的数据输入设置,包括被测管路的周长、管外径、壁厚、材质、衬材、流体类型、探头类型、安装方式等参数的输入。这些参数的输入将影响流量计的测量精度,因此需要准确输入。 ...

    电子政务-夹式电源插头.zip

    5. **安全性**:考虑到数据的安全性和敏感性,电源设备需要符合严格的安全标准,确保在任何情况下都不会对电子政务系统的安全构成威胁。 6. **扩展性**:随着电子政务项目规模的扩大,电源解决方案应具备良好的扩展...

    电子政务-带擦拭底座的快夹式电凝镊系统.zip

    例如,"行业分类-电子政务-带擦拭底座的快夹式电凝镊系统.pdf"这份文件可能包含了详细的设备介绍、操作步骤、维护指南等内容,为医疗机构和医务人员提供详尽的参考资料。 电子政务的实施对于医疗行业的现代化至关...

Global site tag (gtag.js) - Google Analytics