日期:2014-05-19  浏览次数:20781 次

关于list内部排序问题?就是那么奇怪呀!!!!
list数据如下:
Java code

BillTree aa = new BillTree();

        aa.setBillItemTypeID("-100");
        aa.setBillParentID("-1");
        aa.setPrintOrder("99999");
        aa.setBillItemName("移动电话");
        list.add(aa);

        aa = new BillTree();
        aa.setBillItemTypeID("1010020");
        aa.setBillParentID("-100");
        aa.setPrintOrder("20");
        aa.setBillItemName("套餐月基本费");
        list.add(aa);
        
        aa = new BillTree();
        aa.setBillItemTypeID("1010015");
        aa.setBillParentID("1001021");
        aa.setPrintOrder("24");
        aa.setBillItemName("代收费");
        list.add(aa);
        
        aa = new BillTree();
        aa.setBillItemTypeID("1001001");
        aa.setBillParentID("-100");
        aa.setPrintOrder("3");
        aa.setBillItemName("语音");
        list.add(aa);
        
        aa = new BillTree();
        aa.setBillItemTypeID("1010021");
        aa.setBillParentID("-100");
        aa.setPrintOrder("22");
        aa.setBillItemName("套餐外费用");
        list.add(aa);

        aa = new BillTree();
        aa.setBillItemTypeID("1000010");
        aa.setBillParentID("1001001");
        aa.setPrintOrder("7");
        aa.setBillItemName("特服费");
        list.add(aa);
        
        aa = new BillTree();
        aa.setBillItemTypeID("1010006");
        aa.setBillParentID("1001021");
        aa.setPrintOrder("15");
        aa.setBillItemName("短信费");
        list.add(aa);
        
        aa = new BillTree();
        aa.setBillItemTypeID("1010010");
        aa.setBillParentID("1001021");
        aa.setPrintOrder("19");
        aa.setBillItemName("特服费");
        list.add(aa);
        
        aa = new BillTree();
        aa.setBillItemTypeID("1010022");
        aa.setBillParentID("-100");
        aa.setPrintOrder("21");
        aa.setBillItemName("可选包费用");
        list.add(aa);
        
        aa = new BillTree();
        aa.setBillItemTypeID("1010013");
        aa.setBillParentID("1001021");
        aa.setPrintOrder("22");
        aa.setBillItemName("综合服务信息费");
        list.add(aa);
        
        
        
        aa = new BillTree();
        aa.setBillItemTypeID("1010023");
        aa.setBillParentID("1001021");
        aa.setPrintOrder("29");
        aa.setBillItemName("承诺消费补差");
        list.add(aa);


想将id=-1的放到第一位 ParentID=-100的排第二位 PrintOrder是相同的父节点排序用的 如果有对象的父节点是这个对象的话 要放到这个下面
最后的结果要像如下:
Java code

第1个
----test.lId=-100
----test.lParentId=-1
----test.lPrintID=99999
----test.lPrintID=移动电话
第2个
----test.lId=1001001
----test.lParentId=-100
----test.lPrintID=3
----test.lPrintID=语音
第3个
----test.lId=1000010
----test.lParentId=1001001
----test.lPrintID=7
----test.lPrintID=特服费

第4个
----test.lId=1010020
----test.lParentId=-100
----test.lPrintID=20
----test.lPrintID=套餐月基本费
第5个
----test.lId=1010022
----test.lParentId=-100
----test.lPrintID=21
----test.lPrintID=可选包费用

第6个
----test.lId=1010021
----test.lParentId=-100
----test.lPrintID=22
----test.lPrintID=套餐外费用

第7个

----test.lId=1010015
----test.lParentId=1001021
----test.lPrintID=24
----test.lPrintID=代收费
第8个
----test.lId=1010010
----test.lParentId=1001021
----test.lPrintID=19
----test.lPrintID=特服费
第9个
----test.lId=1010006
----test.lParentId=1001021
----test.lPrintID=15
----test.lPrintID=短信费

第