如何用J*a开发命令行通讯录_J*a集合与IO综合实践


J*a命令行通讯录以ArrayList存储Contact对象实现增删改查,通过Properties、自定义文本或序列化完成文件持久化,Scanner实现交互,注重输入校验、异常处理与退出前自动保存。

如何用java开发命令行通讯录_java集合与io综合实践

用J*a开发命令行通讯录,核心是把联系人数据存进集合(如ArrayList或HashMap),再通过IO读写文件实现持久化。界面用Scanner交互,逻辑用面向对象组织,重点在数据结构选择和文件存取的可靠性。

用ArrayList管理联系人,简单直观

每个联系人设计为Contact类,包含姓名、电话、邮箱等字段。通讯录主类里用ArrayList存储所有联系人,增删改查都基于这个集合操作。

  • 添加联系人:new Contact(name, phone, email),add()进集合
  • 按姓名查找:遍历集合,用equals()或contains()配合getName()判断
  • 删除联系人:先find,再remove();注意避免ConcurrentModificationException,可用Iterator或记录索引后倒序删
  • 修改联系人:找到原对象后直接调用setter方法(因Contact是引用类型,改的是堆中同一对象)

用Properties或自定义格式做文本持久化

不依赖数据库,就用普通文本文件保存数据。推荐两种方式:

  • Properties方式:适合键值对结构(如phone_001=138xxxx, name_001=张三),用load()/store()读写,天然支持中文,但需自己编号、拆分字段
  • 自定义文本格式:每行一个联系人,字段用制表符 或英文逗号,分隔(如“李四 139xxxxxx lisi@example.com”)。读取时用String.split(" ")解析,写入时用String.join()拼接。注意处理字段含逗号或换行的情况,可加简单转义(如 →\n)或改用JSON字符串

用ObjectOutputStream做对象序列化(进阶选型)

如果希望直接保存Contact对象,可用序列化。Contact类需实现Serializable接口,用ObjectOutputStream写入文件,ObjectInputStream读取。

Chatbase Chatbase

从你的知识库中构建一个AI聊天机器人

Chatbase 117 查看详情 Chatbase
  • 优点:代码少,自动处理对象嵌套和类型
  • 缺点:文件不可读、不跨语言、版本升级易出NotSerializableException或InvalidClassException
  • 实用建议:仅用于学习演示;生产环境慎用;务必加try-with-resources确保流关闭;反序列化前校验文件存在且非空

命令行交互要有清晰状态与容错

主循环用while(true) + switch控制菜单,Scanner.nextLine()读输入,避免next()残留回车导致后续输入跳过。

  • 输入校验:手机号用正则"1[3-9]\d{9}"判断;邮箱用".+@.+\..+"粗筛;空输入提示重新输入
  • 异常捕获:文件不存在时自动创建空文件;IO异常打印友好提示(如“数据保存失败,请检查磁盘权限”),不抛栈轨迹给用户
  • 退出机制:输入"quit"或"0"退出,并在退出前调用s*eToFile()确保最新数据落盘

整个过程不复杂但容易忽略细节:集合只是内存暂存,IO才是落地关键;Contact类要重写toString()方便打印列表;每次读文件后应清空原集合再addAll,避免重复加载。做好这几点,一个可用的命令行通讯录就完成了。

以上就是如何用J*a开发命令行通讯录_J*a集合与IO综合实践的详细内容,更多请关注其它相关文章!


# js  # json  #   # ai  # switch  # stream  # 邮箱  # java  # 的是  # 遂川展示型网站建设  # 北京网络营销市场推广  # 环境网站建设公司  # 清远外贸网站推广  # 拖鞋怎么推广营销  # 大浪网站建设  # 甘肃网站建设路隧道  # 方案优化网站设计软件  # 网站优化怎么做体验  # 产品做营销推广好吗知乎  # 时用  # 如何使用  # 面向对象  # 键值  # 如何用  # 序列化  # 自定义  # 数据结构  # 命令行  # 键值对  # java开发 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 如何在CSS中清除浮动解决背景颜色不包裹内容问题_clear after技巧  如何解决Casbin日志与应用日志不统一的问题,使用casbin/psr3-bridge实现无缝集成  在React中正确处理HTML input type="number"的数值类型  J*a中的值传递到底指什么_值传递模型在参数传递中的真正含义说明  cad怎么隐藏指定的图层_cad隐藏或冻结图层方法  Win10显卡驱动安装失败怎么办 Win10使用DDU彻底卸载驱动【解决】  优化Flask模板中SQLAlchemy查询迭代标签:处理字符串空格问题  海棠阅读网页版_进入海棠网页版在线阅读中心  HTML Canvas文本样式定制指南:解决外部字体加载与应用难题  《咸鱼之王》新版孙坚技能解析  抖音官网入口快速访问 抖音网页版账号注册解析  PHP中动态类名访问的类实例类型提示与静态分析实践  Lar*el Dusk 测试中管理浏览器权限:以剪贴板访问为例  Win10如何关闭开机锁屏界面_Windows10跳过锁屏直接登录设置  《波斯王子:失落的王冠》剑术大师打法攻略  智慧团建活动报名入口 智慧团建活动报名入口手机端官网​  wps文字怎么设置文字环绕图片的方式_wps文字如何设置文字环绕图片方式  ao3入口镜像地址 ao3镜像入口可靠跳转  vivo云服务一直提示空间不足怎么办 怎么办vivo云服务老是提示空间不足  火狐浏览器如何刷新修复浏览器 火狐浏览器“重置Firefox”功能详解  Linux如何开发轻量级数据服务模块_Linux服务化设计  Flexbox布局中Stencil组件宽度不显示问题解析与:host尺寸控制  Keras中Convolution2D层及其核心辅助层详解  小红书网页版首页入口 小红书网页版电脑端官方登录链接  J*aScript:从子元素中批量移除特定CSS类  《花瓣》创建专辑方法  米侠浏览器插件无法启用怎么办 米侠浏览器扩展兼容性修复  Fedora怎么安装 Fedora Workstation安装步骤  在PHP环境中正确加载HTML资源:CSS样式与图片路径指南  如何修改Windows截图的默认保存位置_告别C盘让桌面更整洁【教程】  win11怎么更改账户类型 Win11标准用户和管理员权限切换【教程】  汽车之家网页版免费登录_汽车之家官网首页直接进入  PHP使用DOMDocument与XPath精准追加XML元素教程  如何使用 Optional 类型并满足 Pylint 的类型检查  如何查找哪个composer包引入了特定的依赖?  大众点评了却看不到是怎么回事  学习通网页版课程打不开_课程无法访问时的解决方法  我的世界游戏平台入口 我的世界官方官网直达链接  word文档行距怎么调?word文档调行距的操作步骤  海棠阅读登录教程_详细讲解海棠登录操作  HTML中多图片上传与预览:解决ID冲突的专业指南  优化长HTML属性值:SonarQube警告与实用策略  cad加载的线型看不见怎么办_cad线型不可见问题解决方法  qq邮箱格式填写示例 qq邮箱标准填写规范  手机耗电快是什么原因 延长手机电池续航时间的设置方法【详解】  抖音火山版注销账号抖音会注销吗 抖音火山版与抖音账号注销关系  招商淘客入门指南  B站怎么快速升级 B站用户等级提升攻略【详解】  《三国:谋定天下》平民全阶段通用阵容  小红书如何引流到私信?引流到私信有用吗? 

 2025-12-19

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.