取名器-小小

做一个取名器,以便以后可以用于测试。

 

 

package com.alison.controller;

import java.util.*;

public class NameCreate {

    // 多少个名字
    private final static int nameCollectionCount = 10;

    private static String[] firstname = {"赵", "钱", "孙", "李", "周", "吴", "郑",
            "王", "冯", "陈", "褚", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许",
            "何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏", "陶", "姜", "戚",
            "谢", "邹", "喻", "柏", "水", "窦", "章", "云", "苏", "潘", "葛", "奚", "范",
            "彭", "郎", "鲁", "韦", "昌", "马", "苗", "凤", "花", "方", "俞", "任", "袁",
            "柳", "酆", "鲍", "史", "唐", "费", "廉", "岑", "薛", "雷", "贺", "倪", "汤",
            "滕", "殷", "罗", "毕", "郝", "邬", "安", "常", "乐", "于", "时", "傅", "皮",
            "卞", "齐", "康", "伍", "余", "元", "卜", "顾", "孟", "平", "黄", "和", "穆",
            "萧", "尹", "姚", "邵", "湛", "汪", "祁", "毛", "禹", "狄", "米", "贝", "明",
            "臧", "计", "伏", "成", "戴", "谈", "宋", "茅", "庞", "熊", "纪", "舒", "屈",
            "项", "祝", "董", "梁", "杜", "阮", "蓝", "闵", "席", "季", "麻", "强", "贾",
            "路", "娄", "危", "江", "童", "颜", "郭", "梅", "盛", "林", "***", "锺", "徐",
            "邱", "骆", "高", "夏", "蔡", "田", "樊", "胡", "凌", "霍", "虞", "万", "支",
            "柯", "昝", "管", "卢", "莫", "经", "房", "裘", "缪", "干", "解", "应", "宗",
            "丁", "宣", "贲", "邓", "郁", "单", "杭", "洪", "包", "诸", "左", "石", "崔",
            "吉", "钮", "龚", "程", "嵇", "邢", "滑", "裴", "陆", "荣", "翁", "荀", "羊",
            "於", "惠", "甄", "麴", "家", "封", "芮", "羿", "储", "靳", "汲", "邴", "糜",
            "松", "井", "段", "富", "巫", "乌", "焦", "巴", "弓", "牧", "隗", "山", "谷",
            "车", "侯", "宓", "蓬", "全", "郗", "班", "仰", "秋", "仲", "伊", "宫", "宁",
            "仇", "栾", "暴", "甘", "钭", "历", "戎", "祖", "武", "符", "刘", "景", "詹",
            "束", "龙", "叶", "幸", "司", "韶", "郜", "黎", "蓟", "溥", "印", "宿", "白",
            "怀", "蒲", "邰", "从", "鄂", "索", "咸", "籍", "赖", "卓", "蔺", "屠", "蒙",
            "池", "乔", "阳", "郁", "胥", "能", "苍", "双", "闻", "莘", "党", "翟", "谭",
            "贡", "劳", "逄", "姬", "申", "扶", "堵", "冉", "宰", "郦", "雍", "却", "璩",
            "桑", "桂", "濮", "牛", "寿", "通", "边", "扈", "燕", "冀", "僪", "浦", "尚",
            "农", "温", "别", "庄", "晏", "柴", "瞿", "阎", "充", "慕", "连", "茹", "习",
            "宦", "艾", "鱼", "容", "向", "古", "易", "慎", "戈", "廖", "庾", "终", "暨",
            "居", "衡", "步", "都", "耿", "满", "弘", "匡", "国", "文", "寇", "广", "禄",
            "阙", "东", "欧", "殳", "沃", "利", "蔚", "越", "夔", "隆", "师", "巩", "厍",
            "聂", "晁", "勾", "敖", "融", "冷", "訾", "辛", "阚", "那", "简", "饶", "空",
            "曾", "毋", "沙", "乜", "养", "鞠", "须", "丰", "巢", "关", "蒯", "相", "查",
            "后", "荆", "红", "游", "竺", "权", "逮", "盍", "益", "桓", "公", "召", "有",
            "舜", "丛", "岳", "寸", "贰", "皇", "侨", "彤", "竭", "端", "赫", "实", "甫",
            "集", "象", "翠", "狂", "辟", "典", "良", "函", "芒", "苦", "其", "京", "中",
            "夕", "之", "冠", "宾", "香", "果", "蹇", "称", "诺", "来", "多", "繁", "戊",
            "朴", "回", "毓", "税", "荤", "靖", "绪", "愈", "硕", "牢", "买", "但", "巧",
            "枚", "撒", "泰", "秘", "亥", "绍", "以", "壬", "森", "斋", "释", "奕", "姒",
            "朋", "求", "羽", "用", "占", "真", "穰", "翦", "闾", "漆", "贵", "代", "贯",
            "旁", "崇", "栋", "告", "休", "褒", "谏", "锐", "皋", "闳", "在", "歧", "禾",
            "示", "是", "委", "钊", "频", "嬴", "呼", "大", "威", "昂", "律", "冒", "保",
            "系", "抄", "定", "化", "莱", "校", "么", "抗", "祢", "綦", "悟", "宏", "功",
            "庚", "务", "敏", "捷", "拱", "兆", "丑", "丙", "畅", "苟", "随", "类", "卯",
            "俟", "友", "答", "乙", "允", "甲", "留", "尾", "佼", "玄", "乘", "裔", "延",
            "植", "环", "矫", "赛", "昔", "侍", "度", "旷", "遇", "偶", "前", "由", "咎",
            "塞", "敛", "受", "泷", "袭", "衅", "叔", "圣", "御", "夫", "仆", "镇", "藩",
            "邸", "府", "掌", "首", "员", "焉", "戏", "可", "智", "尔", "凭", "悉", "进",
            "笃", "厚", "仁", "业", "肇", "资", "合", "仍", "九", "衷", "哀", "刑", "俎",
            "仵", "圭", "夷", "徭", "蛮", "汗", "孛", "乾", "帖", "罕", "洛", "淦", "洋",
            "邶", "郸", "郯", "邗", "邛", "剑", "虢", "隋", "蒿", "茆", "菅", "苌", "树",
            "桐", "锁", "钟", "机", "盘", "铎", "斛", "玉", "线", "针", "箕", "庹", "绳",
            "磨", "蒉", "瓮", "弭", "刀", "疏", "牵", "浑", "恽", "势", "世", "仝", "同",
            "蚁", "止", "戢", "睢", "冼", "种", "涂", "肖", "己", "泣", "潜", "卷", "脱",
            "谬", "蹉", "赧", "浮", "顿", "说", "次", "错", "念", "夙", "斯", "完", "丹",
            "表", "聊", "源", "姓", "吾", "寻", "展", "出", "不", "户", "闭", "才", "无",
            "书", "学", "愚", "本", "性", "雪", "霜", "烟", "寒", "少", "字", "桥", "板",
            "斐", "独", "千", "诗", "嘉", "扬", "善", "揭", "祈", "析", "赤", "紫", "青",
            "柔", "刚", "奇", "拜", "佛", "陀", "弥", "阿", "素", "长", "僧", "隐", "仙",
            "隽", "宇", "祭", "酒", "淡", "塔", "琦", "闪", "始", "星", "南", "天", "接",
            "波", "碧", "速", "禚", "腾", "潮", "镜", "似", "澄", "潭", "謇", "纵", "渠",
            "奈", "风", "春", "濯", "沐", "茂", "英", "兰", "檀", "藤", "枝", "检", "生",
            "折", "登", "驹", "骑", "貊", "虎", "肥", "鹿", "雀", "野", "禽", "飞", "节",
            "宜", "鲜", "粟", "栗", "豆", "帛", "官", "布", "衣", "藏", "宝", "钞", "银",
            "门", "盈", "庆", "喜", "及", "普", "建", "营", "巨", "望", "希", "道", "载",
            "声", "漫", "犁", "力", "贸", "勤", "革", "改", "兴", "亓", "睦", "修", "信",
            "闽", "北", "守", "坚", "勇", "汉", "练", "尉", "士", "旅", "五", "令", "将",
            "旗", "军", "行", "奉", "敬", "恭", "仪", "母", "堂", "丘", "义", "礼", "慈",
            "孝", "理", "伦", "卿", "问", "永", "辉", "位", "让", "尧", "依", "犹", "介",
            "承", "市", "所", "苑", "杞", "剧", "第", "零", "谌", "招", "续", "达", "忻",
            "六", "鄞", "战", "迟", "候", "宛", "励", "粘", "萨", "邝", "覃", "辜", "初",
            "楼", "城", "区", "局", "台", "原", "考", "妫", "纳", "泉", "老", "清", "德",
            "卑", "过", "麦", "曲", "竹", "百", "福", "言", "佟", "爱", "年", "笪", "谯",
            "哈", "墨", "赏", "伯", "佴", "佘", "牟", "商", "琴", "后", "况", "亢", "缑",
            "帅", "海", "归", "钦", "鄢", "汝", "法", "闫", "楚", "晋", "督", "仉", "盖",
            "逯", "库", "郏", "逢", "阴", "薄", "厉", "稽", "开", "光", "操", "瑞", "眭",
            "泥", "运", "摩", "伟", "铁", "迮"};
    /**
     * 用于取一个2字的女性名
     */
    private static String[] lastnameWomenOne = {"筠", "柔", "竹", "霭", "凝", "晓",
            "欢", "霄", "枫", "芸", "菲", "寒", "伊", "亚", "宜", "可", "姬", "舒", "影",
            "荔", "枝", "思", "丽", "秀", "娟", "英", "华", "慧", "巧", "美", "娜", "静",
            "淑", "惠", "珠", "翠", "雅", "芝", "玉", "萍", "红", "娥", "玲", "芬", "芳",
            "燕", "彩", "春", "菊", "勤", "珍", "贞", "莉", "兰", "凤", "洁", "梅", "琳",
            "素", "云", "莲", "真", "环", "雪", "荣", "爱", "妹", "霞", "香", "月", "莺",
            "媛", "艳", "瑞", "凡", "佳", "嘉", "琼", "桂", "娣", "叶", "璧", "璐", "娅",
            "琦", "晶", "妍", "茜", "秋", "珊", "莎", "锦", "黛", "青", "倩", "婷", "姣",
            "婉", "娴", "瑾", "颖", "露", "瑶", "怡", "婵", "雁", "蓓", "纨", "仪", "荷",
            "丹", "蓉", "眉", "君", "琴", "蕊", "薇", "菁", "梦", "岚", "苑", "婕", "馨",
            "瑗", "琰", "韵", "融", "园", "艺", "咏", "卿", "聪", "澜", "纯", "毓", "悦",
            "昭", "冰", "爽", "琬", "茗", "羽", "希", "宁", "欣", "飘", "育", "滢", "馥",
            "楠"};
    /**
     * 用于取一个3字的女性名
     */
    private static String[] lastnameWomenTwo = {"梦琪", "忆柳", "之桃", "慕青", "问兰",
            "尔岚", "元香", "初夏", "沛菡", "傲珊", "曼文", "乐菱", "痴珊", "恨玉", "惜文", "香寒",
            "新柔", "语蓉", "海安", "夜蓉", "涵柏", "水桃", "醉蓝", "春儿", "语琴", "从彤", "傲晴",
            "语兰", "又菱", "碧彤", "元霜", "怜梦", "紫寒", "妙彤", "曼易", "南莲", "紫翠", "雨寒",
            "易烟", "如萱", "若南", "寻真", "晓亦", "向珊", "慕灵", "以蕊", "寻雁", "映易", "雪柳",
            "孤岚", "笑霜", "海云", "凝天", "沛珊", "寒云", "冰旋", "宛儿", "绿真", "盼儿", "晓霜",
            "碧凡", "夏菡", "曼香", "若烟", "半梦", "雅绿", "冰蓝", "灵槐", "平安", "书翠", "紫山",
            "千琴", "恨天", "傲芙", "盼山", "怀蝶", "冰兰", "山柏", "翠萱", "恨松", "问旋", "从南",
            "白易", "问筠", "如霜", "半芹", "丹珍", "冰彤", "亦寒", "寒雁", "怜云", "寻文", "乐丹",
            "翠柔", "谷山", "之瑶", "冰露", "尔珍", "谷雪", "乐萱", "涵菡", "海莲", "傲蕾", "青槐",
            "冬儿", "易梦", "惜雪", "宛海", "之柔", "夏青", "亦瑶", "妙菡", "春竹", "痴梦", "紫蓝",
            "晓巧", "幻柏", "元风", "冰枫", "访蕊", "南春", "芷蕊", "凡蕾", "凡柔", "安蕾", "天荷",
            "含玉", "书兰", "雅琴", "书瑶", "听兰", "听蓉", "语芙", "夏彤", "凌瑶", "忆翠", "幻灵",
            "怜菡", "紫南", "依珊", "妙竹", "访烟", "怜蕾", "映寒", "友绿", "冰萍", "惜霜", "凌香",
            "芷蕾", "雁卉", "迎梦", "元柏", "代萱", "紫真", "千青", "凌寒", "紫安", "寒安", "怀蕊",
            "秋荷"};
    /**
     * 用于取一个3字的男性名
     */
    private static String[] lastnameManTwo = {"理", "颜", "生", "伦", "方", "曦",
            "蓝", "和", "荣", "亮", "岚", "晗", "畅", "晨", "昌", "绍", "略", "昭", "泓",
            "皓", "毅", "豪", "驰", "津", "威", "金", "刚", "沣", "臻", "雨", "欣", "鸿",
            "政", "达", "名", "川", "材", "成", "嘉", "立", "廷", "增", "济", "震", "钦",
            "韬", "璟", "竹", "文", "涛", "永", "翔", "洁", "利", "序", "谱", "海", "新",
            "景", "跃", "琪", "宏", "希", "俊", "功", "采", "风", "瀚", "耀", "双", "宝",
            "恒", "伟", "富", "大", "英", "智", "照", "怡", "学", "腾", "庆", "焘", "先",
            "晟", "亿", "凤", "盛", "帅", "亦", "乐", "锋", "铭", "罡", "亭", "凯", "仁",
            "靖", "辰", "悦", "栋", "群", "轩", "垒", "华", "誉", "备", "科", "珑", "建",
            "笑", "波", "益", "至", "易", "万", "诗", "元", "宣", "旭", "胜", "进", "才",
            "骁", "溓", "洪", "歌", "兴", "东", "峰", "章", "坤", "凡", "聪", "来", "贤",
            "阳", "韦", "言", "飞", "振", "钢", "奎", "宁", "丰", "广", "朔", "钧", "升",
            "超", "国", "珺", "选", "霖", "士", "锦", "霆", "映", "哲", "崇", "恩", "云",
            "泰", "崊", "淼", "诚", "高", "月", "健", "晔", "航", "庭", "雄", "之", "谦",
            "策", "咏", "鹏", "启", "彦", "冬", "时", "州", "牧", "堂", "奇", "彰", "福",
            "艺", "业", "义", "聚", "磊", "镇", "博", "连", "尧", "浩", "溪", "越", "宜",
            "家", "辉", "礼", "春", "函", "洲", "志", "星", "励", "锐", "禾", "蔚", "登",
            "丞", "强", "全", "传", "宇", "世", "纪", "然", "洋", "巩", "展", "佳", "敖",
            "顺", "鑫", "朋", "圣", "民", "瑞", "可", "睿", "齐", "岩", "晓", "森", "子",
            "影", "向", "望", "宪", "起", "充", "祥", "骅", "隆", "斌", "玉", "忠", "江",
            "滔", "涵", "维", "虹", "迎", "同", "与", "帆", "安", "议", "意", "儒", "卫",
            "梓", "迅", "舜", "德", "友", "佚", "瑜", "基", "衡", "韵", "良", "明", "泊",
            "骏", "山", "钊", "献", "清", "纶", "林", "蒙", "正", "琛", "为", "语", "军",
            "平", "勇", "昊", "兵", "谊", "源", "远", "朗", "邦", "奕", "祖", "泽", "中",
            "城", "蕾", "融", "谋", "冠", "信", "力", "灿", "炎", "灵", "灼", "炜", "炬",
            "烽", "煌", "焯", "烨", "琰", "日", "明", "晴", "昕", "明", "昀", "映", "旺",
            "晓", "昵", "昭", "晔", "晚", "暖", "晰", "曙", "曜", "晗", "旭", "昶", "阳",
            "早", "旦", "昆", "昊", "昇", "易", "昂", "昌", "晶", "炅", "景", "颢", "显",
            "昱", "晃", "晁", "晨", "曼", "晋", "智", "昔", "昙", "旻", "晟", "可", "叮",
            "吉", "合", "同", "君", "启", "呆", "叶", "嗯", "哼", "宝", "咚", "呱", "安",
            "宇", "宜", "宙", "宣", "密", "歌", "芸", "莫", "英", "竺", "迅", "彬", "茨",
            "荣", "莱", "莲", "莳", "莹", "莺"};

    private static class SEX {
        private static final String MAN = "1";
        private static final String WOMEN = "2";
    }

    private static class NAMELENG {
        private static final int TWO = 2;
        private static final int THREE = 3;
    }

    private NameCreate() {
    }

    private static NameCreate singleInstance;

    private static NameCreate getInstance() {
        if (singleInstance == null) {
            singleInstance = new NameCreate();
        }
        return singleInstance;
    }

    private static Random random = new java.util.Random();

    /**
     * 起名器,可以取2字,3字,可能是男名,可能是女名
     */
    @SuppressWarnings("unchecked")
    public List getUniqueName() {
        List<String> nameList = new ArrayList<String>(
                NameCreate.nameCollectionCount);
        try {
            // 起男孩名
            int manCount = random.nextInt(NameCreate.nameCollectionCount) + 1;
            nameList.addAll(getManName(manCount, NameCreate.SEX.MAN));
            // 起女孩名
            nameList.addAll(getManName(NameCreate.nameCollectionCount
                    - manCount, NameCreate.SEX.WOMEN));
        } catch (Exception e) {
            System.out.println("发生异常," + e.getMessage());
        }
        return nameList;
    }

    private class Name {
        // 姓名的个数
        private int count;
        // 姓名的长度
        private int nameLength;
        // 男女
        private String sex;
        // 名字值
        private String nameValue;

        public int getCount() {
            return count;
        }

        public void setCount(int count) {
            this.count = count;
        }

        public int getNameLength() {
            return nameLength;
        }

        public void setNameLength(int nameLength) {
            this.nameLength = nameLength;
        }

        public String getSex() {
            return sex;
        }

        public void setSex(String sex) {
            this.sex = sex;
        }

        public String getNameValue() {
            return nameValue;
        }

        public void setNameValue(String nameValue) {
            this.nameValue = nameValue;
        }

        public Name(int count, int nameLength, String sex, String nameValue) {
            super();
            this.count = count;
            this.nameLength = nameLength;
            this.sex = sex;
            this.nameValue = nameValue;
        }

        public Name(int count, int nameLength, String sex) {
            super();
            this.count = count;
            this.nameLength = nameLength;
            this.sex = sex;
        }

        public Name(int count, int nameLength) {
            super();
            this.count = count;
            this.nameLength = nameLength;
        }

        public Name(String sex, String nameValue) {
            super();
            this.sex = sex;
            this.nameValue = nameValue;
        }

        public Name() {
            super();
        }
    }

    /**
     * 取男名
     *
     * @param manCount
     * @return
     */
    private static String nameValue = "";

    @SuppressWarnings("unchecked")
    public List getManName(int manCount, String sex) throws Exception {
        int twoCount = 0;
        List manList = new ArrayList(manCount);
        // 起3字中姓名的个数
        int threeManCount = random.nextInt(manCount + 1);
        twoCount = manCount - threeManCount;
        Name manName = new Name(threeManCount, NAMELENG.THREE, sex);
        getNameByCount(manList, manName);
        Name manName2 = new Name(twoCount, NAMELENG.TWO, sex);
        getNameByCount(manList, manName2);
        return manList;
    }

    /**
     * 起名字,男女, 2字3字名
     *
     * @param manList
     * @param count
     * @return
     */
    @SuppressWarnings("unchecked")
    private List getNameByCount(List<Map<String, String>> manList, Name nameObj)
            throws Exception {
        int count = nameObj.getCount();
        int twoIndex = 0, threeIndex = 0;
        if (nameObj.getNameLength() != NameCreate.NAMELENG.TWO
                && nameObj.getNameLength() != NameCreate.NAMELENG.THREE) {
            throw new java.lang.IllegalArgumentException(
                    "发生错误,姓名的长度未设置,请设置,长度有2或者3.");
        }
        while (count > 0) {
            // 男
            if (nameObj.getSex().equals(NameCreate.SEX.MAN)) {
                nameValue = firstname[random.nextInt(firstname.length)];
                twoIndex = random.nextInt(lastnameManTwo.length);
                nameValue += lastnameManTwo[twoIndex];
                if (nameObj.getNameLength() == NameCreate.NAMELENG.THREE) {
                    threeIndex = random.nextInt(lastnameManTwo.length);
                    while (threeIndex == twoIndex) {
                        threeIndex = random.nextInt(lastnameManTwo.length);
                    }
                    nameValue += lastnameManTwo[threeIndex];
                }
            } else { // 女
                nameValue = firstname[random.nextInt(firstname.length)];
                // 2字还是3字
                if (nameObj.getNameLength() == NameCreate.NAMELENG.TWO) {
                    twoIndex = random.nextInt(lastnameWomenOne.length);
                    nameValue += lastnameWomenOne[twoIndex];
                } else if (nameObj.getNameLength() == NameCreate.NAMELENG.THREE) {
                    twoIndex = random.nextInt(lastnameWomenTwo.length);
                    nameValue += lastnameWomenTwo[twoIndex];
                }
            }
            Name tempNameObj = new Name(nameObj.getSex(), nameValue);
            Map<String, String> nameMap = new HashMap<String, String>();
            nameMap.put("name", tempNameObj.getNameValue());
            nameMap.put("sex", tempNameObj.getSex());
            manList.add(nameMap);
            count--;
        }
        return manList;
    }

    public static void main(String[] args) {
        System.out.println(NameCreate.getInstance().getUniqueName());
    }
}

  

  

posted @ 2018-01-09 15:11  AlisonGavin  阅读(567)  评论(0编辑  收藏  举报