码迷,mamicode.com
首页 > 其他好文 > 详细

取名器-小小

时间:2018-01-09 16:47:19      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:temp   map   random   ati   中文   util   []   add   index   

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

 

 

package com.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

/**
 * 起名器, 主要是起中文名字,包括2字,或者3字,或者4字
 * 
 * @version 1.0 2017-12-28
 * @author hy
 * 
 */
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;
	}

	/**
	 * 取男名
	 * 
	 * @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());
	}

}

  

取名器-小小

标签:temp   map   random   ati   中文   util   []   add   index   

原文地址:https://www.cnblogs.com/alisonGavin/p/8251548.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!