<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    和風(fēng)細(xì)雨

    世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運(yùn)用之術(shù)自出。

    現(xiàn)實(shí)中軍隊(duì)樹狀結(jié)構(gòu)的實(shí)現(xiàn)

    抽象單位類,Soldier和TroopUnit的基類:
    package com.sitinspring;

    /**
     * 抽象單位類,Soldier和TroopUnit的基類
     * 
    @author sitinspring(junglesong@gmail.com)
     *
     * @date 2007-12-4
     
    */

    public abstract class Unit {
        
    // 單位名
        protected String name;

        
    // 所在單位
        protected TroopUnit currTroopUnit;

        
    protected static final String TAB = "    ";

        
    public Unit(String name) {
            
    this.name = name;
        }


        
    // 打印信息,強(qiáng)制子類實(shí)現(xiàn)
        public abstract void printInfo(String tabs);

        
    // 取得單位的絕對(duì)路徑
        public String getPath() {
            StringBuffer sb 
    = new StringBuffer();

            TroopUnit troopUnitointer 
    = currTroopUnit;

            
    if (troopUnitointer == null{
                
    return "頂級(jí)";
            }

            
    while (troopUnitointer != null{
                
    // 取得的單位名放置在前方
                sb.insert(0, troopUnitointer.name + "/");

                
    // 繼續(xù)向上回溯
                troopUnitointer = troopUnitointer.currTroopUnit;
            }


            
    return sb.toString();
        }


        
    public void setCurrTroopUnit(TroopUnit currTroopUnit) {
            
    this.currTroopUnit = currTroopUnit;
        }


        
    public void setName(String name) {
            
    this.name = name;
        }


        
    public TroopUnit getCurrTroopUnit() {
            
    return currTroopUnit;
        }


        
    public String getName() {
            
    return name;
        }

    }

    Soldier類:
    package com.sitinspring;

    /**
     * Soldier類,繼承自Unit
     * 
    @author sitinspring(junglesong@gmail.com)
     *
     * @date 2007-12-4
     
    */

    public class Soldier extends Unit{
        
    public Soldier(String name){
            
    super(name);
        }

        
        
    /**
         * 打印士兵的信息
         
    */

        
    public void printInfo(String tabs){
            System.out.println(tabs
    +" 士兵名="+name+" path="+getPath());
        }

    }


    軍事建制單位類:
    package com.sitinspring;

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

    /**
     * 軍事建制單位類,繼承自Unit
     * 
    @author sitinspring(junglesong@gmail.com)
     *
     * @date 2007-12-4
     
    */

    public class TroopUnit extends Unit{
        
    // 屬下的單位集合,包括士兵及建制單位
        private List<Unit> units;
        
        
    public TroopUnit(String name) {
            
    super(name);
        }

        
    // 刪除一個(gè)單位
        public void remove(Unit unit) {
            units.remove(unit);
        }

        
        
    // 添加一個(gè)單位
        public void add(Unit unit) {
            
    if (units == null{
                units 
    = new ArrayList<Unit>();
            }


            units.add(unit);

            
    // 設(shè)置添加單位的所在單位為自身
            unit.setCurrTroopUnit(this);
        }

        
        
    /**
         * 按名字查找
         * 
    @param name
         * 
    @param foundUnits
         
    */

        
    public void findbyName(String name,List<Unit> foundUnits) {
            
    // 對(duì)空目錄進(jìn)行檢查,以防空指針異常發(fā)生
            if (units == null{
                
    return;
            }


            
    // 遍歷查找
            for (Unit unit : units) {
                
    if (unit instanceof TroopUnit) {
                    
    // 找到目錄
                    TroopUnit troopUnit = (TroopUnit) unit;

                    
    if (troopUnit.units == null
                            
    || troopUnit.units.size() == 0{
                        
    continue ;
                    }
     else {
                        
    // 有子單位則繼續(xù)向下遞歸遍歷
                        troopUnit.findbyName(name,foundUnits);
                    }


                }
     else {
                    Soldier soldier 
    = (Soldier) unit;

                    
    if (soldier.getName().contains(name)) {
                        foundUnits.add(soldier);
                    }

                }

            }

        }

        

        
    /**
         * 打印單位信息,包括其下包括的單位
         
    */

        
    public void printInfo(String tabs) {
            
    // 輸出本身的信息
            System.out.println(tabs + " 單位名=" + name + " path=" + getPath());

            
    // 對(duì)屬下的單位集合進(jìn)行檢查,以防空指針異常發(fā)生
            if (units == null{
                
    return;
            }


            
    // 將屬下的單位集合中的文件目錄信息也打印出來
            for (Unit unit : units) {
                
    // tabs + TAB是讓下到一層目錄就縮進(jìn)一次
                unit.printInfo(tabs + TAB);
            }

        }

    }


    調(diào)用:
    package com.sitinspring;

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

    /**
     * 程序入口
     * 
    @author sitinspring(junglesong@gmail.com)
     *
     * @date 2007-12-4
     
    */

    public class Main{
        
    public static void main(String[] args){
            
    // 一級(jí)一級(jí)的建立體系結(jié)構(gòu)
            Soldier xsd=new Soldier("許三多");
            TroopUnit sanban
    =new TroopUnit("三班");
            sanban.add(xsd);
            
            Soldier xsd1
    =new Soldier("許二多");
            TroopUnit wuban
    =new TroopUnit("五班");
            wuban.add(xsd1);
            
            TroopUnit yipai
    =new TroopUnit("一排");
            yipai.add(sanban);
            yipai.add(wuban);
            
            TroopUnit qilian
    =new TroopUnit("七連");
            qilian.add(yipai);
            
            Soldier wuliuyi
    =new Soldier("伍六一");
            TroopUnit yiban
    =new TroopUnit("一班");
            yiban.add(wuliuyi);
            
            TroopUnit yipai1
    =new TroopUnit("一排");
            yipai1.add(yiban);
            
            TroopUnit yilian
    =new TroopUnit("一連");
            yilian.add(yipai1);        
            
            TroopUnit yiying
    =new TroopUnit("一營(yíng)");
            yiying.add(qilian);
            yiying.add(yilian);
            
            TroopUnit zhuangjiatuan
    =new TroopUnit("裝甲團(tuán)");
            zhuangjiatuan.add(yiying);
            
            TroopUnit zhuangjiashi
    =new TroopUnit("裝甲師");
            zhuangjiashi.add(zhuangjiatuan);
            
            TroopUnit sanshibajun
    =new TroopUnit("甲種軍");
            sanshibajun.add(zhuangjiashi);
            
            
    // 打印整體結(jié)構(gòu)
            sanshibajun.printInfo("");
            
            
    // 找出名字中包含"許"的士兵
            List<Unit> foundUnits=new ArrayList<Unit>();
            sanshibajun.findbyName(
    "", foundUnits);
            
            
    // 打印找出的單位
            for(Unit unit:foundUnits){
                unit.printInfo(
    "");
            }

        }

        
    }

    執(zhí)行結(jié)果:
     單位名=甲種軍 path=頂級(jí)
         單位名
    =裝甲師 path=甲種軍/
             單位名
    =裝甲團(tuán) path=甲種軍/裝甲師/
                 單位名
    =一營(yíng) path=甲種軍/裝甲師/裝甲團(tuán)/
                     單位名
    =七連 path=甲種軍/裝甲師/裝甲團(tuán)/一營(yíng)/
                         單位名
    =一排 path=甲種軍/裝甲師/裝甲團(tuán)/一營(yíng)/七連/
                             單位名
    =三班 path=甲種軍/裝甲師/裝甲團(tuán)/一營(yíng)/七連/一排/
                                 士兵名
    =許三多 path=甲種軍/裝甲師/裝甲團(tuán)/一營(yíng)/七連/一排/三班/
                             單位名
    =五班 path=甲種軍/裝甲師/裝甲團(tuán)/一營(yíng)/七連/一排/
                                 士兵名
    =許二多 path=甲種軍/裝甲師/裝甲團(tuán)/一營(yíng)/七連/一排/五班/
                     單位名
    =一連 path=甲種軍/裝甲師/裝甲團(tuán)/一營(yíng)/
                         單位名
    =一排 path=甲種軍/裝甲師/裝甲團(tuán)/一營(yíng)/一連/
                             單位名
    =一班 path=甲種軍/裝甲師/裝甲團(tuán)/一營(yíng)/一連/一排/
                                 士兵名
    =伍六一 path=甲種軍/裝甲師/裝甲團(tuán)/一營(yíng)/一連/一排/一班/
     士兵名
    =許三多 path=甲種軍/裝甲師/裝甲團(tuán)/一營(yíng)/七連/一排/三班/
     士兵名
    =許二多 path=甲種軍/裝甲師/裝甲團(tuán)/一營(yíng)/七連/一排/五班/


    代碼下載:
    http://www.tkk7.com/Files/sitinspring/TroopTree20071204123647.rar

    posted on 2008-02-22 10:31 和風(fēng)細(xì)雨 閱讀(333) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 无码精品一区二区三区免费视频 | 亚洲Av永久无码精品黑人| 无码日韩精品一区二区三区免费 | 国产一级一片免费播放i| 亚洲无人区码一二三码区别图片| 91精品免费国产高清在线| 伊人久久综在合线亚洲2019| 野花香在线视频免费观看大全 | 无码一区二区三区亚洲人妻| 国产精品免费视频网站| 国产亚洲欧美在线观看| 亚洲国产成人影院播放| 精品多毛少妇人妻AV免费久久 | 亚洲中字慕日产2021| 成人黄动漫画免费网站视频 | caoporn成人免费公开| 亚洲中文字幕第一页在线| 国产一级高青免费| 亚洲国产天堂在线观看| 午夜福利不卡片在线播放免费| 亚洲一区二区三区成人网站| 大胆亚洲人体视频| 99久久免费国产精精品| 亚洲综合婷婷久久| 99视频在线精品免费观看6| 国产av无码专区亚洲av毛片搜| 国产成人精品日本亚洲专区| 国产精品视频白浆免费视频| 亚洲乱码卡三乱码新区| 全部免费国产潢色一级| 97人妻精品全国免费视频 | 亚洲日本va午夜中文字幕久久| 久久久精品午夜免费不卡| 亚洲国产片在线观看| 免费h黄肉动漫在线观看| 视频免费在线观看| 亚洲最大中文字幕无码网站| 国产乱辈通伦影片在线播放亚洲| 99国产精品免费观看视频| 亚洲AV性色在线观看| 亚洲va在线va天堂va不卡下载|