【Java随机生成中文姓名】

【Java随机生成中文姓名】java 类的目的是从预定义的 JSON 文件中加载中文姓名数据 并能够随机生成中文姓名 调用时控制循环次数 即可生成 n 个随机中文姓名

随机生成中文姓名

目的:
GenerateName 类的目的是从预定义的 JSON 文件中加载中文姓名数据,并能够随机生成中文姓名,调用时控制循环次数,即可生成n个随机中文姓名。
调用只需:

 for (int i = 0; i < 100; i++) { 
    System.out.println(new GenerateName().getRandomName()); } 

即可生成如下的名字:

晋悦昌 荣慧 喻忆 訾祥兵 程谦 齐珍 蒙媛琴 梁厚益 勾声安 毛雨健 巫发士 车雄嘉 仲孙霞蓓 束继云 荆毅彤 和莲 牛迅 薄雅迎 商峰 郁爱 余月霏 郁发宇 东石咏 阎中 牧群 闻人桐诗 邬采 鞠倩 甘润 益进 岑勇 左丘崊 伊名 公西捷 闫霏 董伶 纪娇 西门南 晋笑 符萌宏 章凝 孟化俊 鞠玹 惠章义 瞿仪 奚振化 郏泊 耿麟婧 阚熙 巩娴 匡春 郜生惠 解茜俊 蓝伊继 红孝婉 陶棋 艾宪 周勇为 姜碧 沈杨纶 雍溓 计刚建 宗政成根 邓靓冉 万仁 裘瑞 孙毅紫 倪焘春 鞠善淇 融芷德 郁森 熊宜 融可业 简东娆 东国汝 漆雕亦苹 计融 徐哲 武科 祝定浩 全诚理 农方 邢利 弓竹钰 班俪 弓章恒 王敖筱 冉贝 邬仪 邢奇海 匡才 向乔萌 夔秋品 卜运瀚 禄林 别帆至 谢芸征 郎润勇 葛起 阙辉 

实现方法:

  1. 数据加载
    类在构造时使用 ObjectMapper 从类路径下的 /name.json 文件中读取姓名数据。数据被解析为一个 NameData 对象,该对象包含两个列表:surnames(姓氏)和 givenNames(名字)。
 public GenerateName() { 
    try { 
    ObjectMapper mapper = new ObjectMapper(); NameData data = mapper.readValue(getClass().getResourceAsStream("/name.json"), NameData.class); this.surnames = data.getSurnames(); this.givenNames = data.getGivenNames(); } catch (IOException e) { 
    throw new NameDataLoadingException("Failed to load name data from '/name.json'", e); } } 

如果数据加载失败,将抛出自定义的 NameDataLoadingException。

  1. 随机姓名生成
    getRandomName 方法使用 Random 类实例来随机选择一个姓氏和两个名字,并将它们拼接成一个字符串返回。
public String getRandomName() { 
    String surname = surnames.get(random.nextInt(surnames.size())); String givenName = givenNames.get(random.nextInt(1, givenNames.size())); String givenName2 = givenNames.get((random.nextInt(givenNames.size())) * (random.nextInt(2))); return surname + givenName + givenName2; } 
  1. 辅助类和异常
    NameData 类是一个简单的数据容器,用于存储从 JSON 文件中加载的姓氏和名字列表。
    NameDataLoadingException 是一个自定义异常类,当无法从 JSON 文件加载数据时抛出。
    使用方法
    创建 GenerateName 实例,并调用getRandomName方法来获取一个随机生成的中文姓名。

注意事项

  • 确保 /name.json 文件位于类路径上,并且格式正确。
  • getRandomName 方法假定 givenNames 列表至少包含两个名字。

实现源码:

  • GenerateName.java
/ * GenerateName 类用于从提供的姓名数据中随机生成姓名。 */ package org.example.util;//导入后需要修改 import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.util.List; import java.util.Random; public class GenerateName { 
    private List<String> surnames; // 姓氏列表 private List<String> givenNames; // 名字列表 private final Random random = new Random(); // 用于生成随机数 / * GenerateName 的构造函数。在对象创建时自动加载姓名数据。 * @throws NameDataLoadingException 如果无法从资源文件中加载姓名数据,则抛出异常。 */ public GenerateName() { 
    try { 
    ObjectMapper mapper = new ObjectMapper(); NameData data = mapper.readValue(getClass().getResourceAsStream("/name.json"), NameData.class); this.surnames = data.getSurnames(); this.givenNames = data.getGivenNames(); } catch (IOException e) { 
    throw new NameDataLoadingException("Failed to load name data from '/name.json'", e); } } / * 随机生成一个姓名。 * @return 返回一个由随机选择的姓氏和名字组成的字符串。 */ public String getRandomName() { 
    // 从姓氏列表中随机选择一个姓氏 String surname = surnames.get(random.nextInt(surnames.size())); // 从名字列表中随机选择一个或两个名字 String givenName = givenNames.get(random.nextInt(1, givenNames.size())); String givenName2 = givenNames.get((random.nextInt(givenNames.size())) * (random.nextInt(2))); // 组合姓氏和名字并返回 return surname + givenName + givenName2; } / * NameData 内部类用于存储从 JSON 文件中加载的姓氏和名字数据。 */ private static class NameData { 
    private List<String> surnames; private List<String> givenNames; public List<String> getSurnames() { 
    return surnames; } public List<String> getGivenNames() { 
    return givenNames; } } / * NameDataLoadingException 是一个运行时异常类,用于在加载姓名数据失败时抛出。 */ public static class NameDataLoadingException extends RuntimeException { 
    public NameDataLoadingException(String message, Throwable cause) { 
    super(message, cause); } } } 
  • name.json
{ 
    "surnames": [ "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "褚", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许", "何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏", "陶", "姜", "戚", "谢", "邹", "喻", "柏", "水", "窦", "章", "云", "苏", "潘", "葛", "奚", "范", "彭", "郎", "鲁", "韦", "昌", "马", "苗", "凤", "花", "方", "俞", "任", "袁", "柳", "酆", "鲍", "史", "唐", "费", "廉", "岑", "薛", "雷", "贺", "倪", "汤", "滕", "殷", "罗", "毕", "郝", "邬", "安", "常", "乐", "于", "时", "傅", "皮", "卞", "齐", "康", "伍", "余", "", "卜", "顾", "孟", "平", "黄", "和", "穆", "萧", "尹", "姚", "邵", "湛", "汪", "祁", "毛", "禹", "狄", "米", "贝", "明", "臧", "计", "伏", "成", "戴", "谈", "宋", "茅", "庞", "熊", "纪", "舒", "屈", "项", "祝", "董", "梁", "杜", "阮", "蓝", "闵", "席", "季", "麻", "强", "贾", "路", "娄", "危", "江", "童", "颜", "郭", "梅", "盛", "林", "刁", "钟", "徐", "邱", "骆", "高", "夏", "蔡", "田", "樊", "胡", "凌", "霍", "虞", "万", "支", "柯", "昝", "管", "卢", "莫", "经", "房", "裘", "缪", "干", "解", "应", "宗", "丁", "宣", "贲", "邓", "郁", "单", "杭", "洪", "包", "诸", "左", "石", "崔", "吉", "钮", "龚", "程", "嵇", "邢", "滑", "裴", "陆", "荣", "翁", "荀", "羊", "於", "惠", "甄", "曲", "家", "封", "芮", "羿", "储", "靳", "汲", "邴", "糜", "松", "井", "段", "富", "巫", "乌", "焦", "巴", "弓", "牧", "隗", "山", "谷", "车", "侯", "宓", "蓬", "全", "郗", "班", "仰", "秋", "仲", "伊", "宫", "宁", "仇", "栾", "暴", "甘", "钭", "厉", "戎", "祖", "武", "符", "刘", "景", "詹", "束", "龙", "叶", "幸", "司", "韶", "郜", "黎", "蓟", "薄", "印", "宿", "白", "怀", "蒲", "邰", "从", "鄂", "索", "咸", "籍", "赖", "卓", "蔺", "屠", "蒙", "池", "乔", "阴", "郁", "胥", "能", "苍", "双", "闻", "莘", "党", "翟", "谭", "贡", "劳", "逄", "姬", "申", "扶", "堵", "冉", "宰", "郦", "雍", "却", "璩", "桑", "桂", "濮", "牛", "寿", "通", "边", "扈", "燕", "冀", "郏", "浦", "尚", "农", "温", "别", "庄", "晏", "柴", "瞿", "阎", "充", "慕", "连", "茹", "习", "宦", "艾", "鱼", "容", "向", "古", "易", "慎", "戈", "廖", "庾", "终", "暨", "居", "衡", "步", "都", "耿", "满", "弘", "匡", "国", "文", "寇", "广", "禄", "阙", "东", "欧", "殳", "沃", "利", "蔚", "越", "夔", "隆", "师", "巩", "厍", "聂", "晁", "勾", "敖", "融", "冷", "訾", "辛", "阚", "那", "简", "饶", "空", "曾", "毋", "沙", "乜", "养", "鞠", "须", "丰", "巢", "关", "蒯", "相", "查", "后", "荆", "红", "游", "竺", "权", "逯", "盖", "益", "桓", "公", "晋", "楚", "闫", "鄢", "涂", "钦", "岳", "帅", "段", "干", "商", "牟", "佘", "赏", "阳", "佟", "墨", "哈", "谯", "爱", "万俟", "司马", "上官", "夏侯", "诸葛", "闻人", "东方", "赫连", "皇甫", "尉迟", "公羊", "澹台", "公冶", "宗政", "欧阳", "淳于", "单于", "太叔", "申屠", "公孙", "仲孙", "轩辕", "令狐", "钟离", "宇文", "长孙", "慕容", "鲜于", "闾丘", "司徒", "司空", "丌官", "司寇", "子车", "法汝", "颛孙", "端木", "巫马", "公西", "漆雕", "乐正", "壤驷", "公良", "拓跋", "夹谷", "宰父", "谷梁", "百里", "东郭", "呼延", "南宫", "梁丘", "左丘", "东门", "西门" ], "givenNames": [" ", "权", "羽", "月", "蒙", "朋", "略", "奎", "韵", "嘉", "方", "紫", "淼", "姗", "春", "炳", "纯", "麒", "彩", "洺", "顺", "凝", "宣", "辰", "诒", "家", "川", "恒", "谨", "可", "山", "璟", "棋", "丞", "雪", "晔", "献", "岩", "莲", "友", "振", "璐", "廷", "佩", "言", "学", "焘", "选", "昌", "俪", "洪", "章", "诗", "厚", "承", "雨", "儒", "珑", "芷", "歌", "旭", "生", "喜", "茂", "臻", "裕", "津", "华", "健", "声", "励", "菁", "佳", "勋", "萍", "汝", "勤", "梦", "跃", "雄", "若", "连", "毓", "霖", "霏", "冠", "菊", "芸", "崊", "聪", "育", "建", "和", "敬", "帆", "湾", "谋", "晨", "全", "偌", "靓", "雷", "骄", "继", "钊", "卫", "颖", "世", "显", "珊", "晴", "优", "函", "苒", "保", "阳", "儿", "莹", "映", "展", "北", "鹏", "琪", "标", "虹", "巧", "锋", "贤", "佚", "洁", "芳", "允", "康", "麟", "革", "与", "好", "巩", "玲", "道", "功", "泓", "冬", "孟", "珺", "渲", "瑾", "吉", "碧", "祥", "蔚", "露", "畅", "邦", "孝", "筱", "沛", "礼", "渺", "谱", "燕", "才", "岚", "照", "男", "珠", "婧", "政", "隆", "海", "开", "立", "骅", "谊", "美", "仪", "艳", "然", "为", "菡", "禾", "淇", "忻", "融", "爱", "勇", "韬", "尚", "忠", "理", "朝", "城", "启", "钧", "萱", "毅", "百", "荣", "长", "莉", "舒", "天", "黎", "罡", "昊", "万", "明", "曼", "婉", "娇", "传", "帅", "炜", "奇", "灿", "艺", "鲁", "梅", "纪", "怀", "营", "航", "容", "慧", "少", "骏", "希", "培", "申", "蓓", "国", "会", "昕", "丰", "旻", "汉", "巍", "彦", "兵", "垒", "潞", "翰", "清", "军", "伦", "冰", "诚", "绍", "同", "涛", "祺", "剑", "钦", "桂", "朗", "平", "涵", "誉", "贵", "琴", "棠", "凯", "臣", "志", "妹", "珮", "金", "焕", "加", "卉", "力", "钢", "备", "寿", "灵", "基", "娆", "凤", "子", "任", "中", "磊", "升", "曦", "安", "光", "雯", "如", "风", "定", "西", "琳", "济", "向", "发", "湘", "英", "源", "星", "非", "迅", "雅", "洋", "秀", "捷", "丛", "心", "雁", "进", "科", "望", "登", "智", "其", "波", "滔", "娴", "静", "真", "群", "伟", "锐", "凡", "枫", "桐", "怡", "倩", "盛", "竹", "珍", "时", "豪", "议", "亿", "斌", "璇", "珂", "洲", "琦", "宪", "漫", "堂", "君", "瀚", "兆", "常", "宁", "双", "笑", "先", "泰", "年", "有", "业", "溓", "瑜", "茜", "睿", "益", "泉", "涓", "蓉", "浩", "贝", "红", "泽", "晓", "延", "劲", "田", "逸", "影", "惠", "玟", "博", "蓝", "兰", "骁", "思", "玉", "克", "根", "伊", "彬", "小", "润", "敖", "牧", "皓", "江", "丽", "伯", "南", "盈", "彤", "馨", "萌", "鸿", "叶", "达", "沁", "晋", "品", "云", "采", "齐", "忆", "悦", "森", "瑷", "景", "腾", "晖", "耀", "威", "卿", "朦", "广", "镇", "依", "至", "石", "菏", "媛", "之", "亦", "起", "义", "梓", "松", "坤", "素", "芬", "赏", "杰", "昭", "丹", "材", "韦", "滨", "俊", "咏", "峰", "利", "轩", "香", "震", "名", "扬", "晗", "熙", "妮", "玮", "潇", "婷", "欣", "琛", "卓", "谦", "大", "彪", "锦", "兴", "策", "宗", "", "铭", "多", "凌", "丫", "溪", "宏", "易", "福", "乐", "朔", "崇", "充", "沣", "亮", "州", "语", "鑫", "树", "青", "琸", "霞", "书", "翔", "德", "楚", "夫", "文", "超", "林", "玹", "恩", "行", "嫒", "富", "仁", "蕊", "奕", "宜", "鸣", "满", "柏", "蕾", "茗", "铁", "予", "愉", "来", "爽", "朵", "意", "甜", "宝", "晶", "聆", "芝", "宇", "久", "钰", "瑶", "逦", "运", "妍", "亭", "武", "一", "乔", "岳", "潮", "聚", "蔓", "水", "夏", "冉", "睻", "靖", "栋", "胜", "秋", "维", "虎", "颜", "彰", "姿", "正", "祖", "成", "良", "娟", "银", "坚", "晟", "日", "亚", "尧", "鹤", "东", "乃", "庆", "瑞", "信", "仲", "杨", "泊", "哲", "圣", "强", "霄", "珏", "微", "敏", "迎", "驰", "迪", "远", "赫", "伶", "京", "娜", "刚", "永", "龙", "舜", "飞", "菲", "高", "新", "莺", "越", "苹", "识", "庭", "怿", "民", "楠", "士", "征", "妙", "淑", "纶", "辉", "善", "锡", "化" ] } 

完~

今天的文章 【Java随机生成中文姓名】分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-07 19:30
下一篇 2024-12-07 19:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/80105.html