黑马程序员:DVD管理系统项目之一--核心集合的选择问题





---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ----------------------


[原创]DVD管理系统项目之一--核心集合的选择问题
问题说明:
要完成的项目主界面控制台输出如下,
  1. <font face="微软雅黑">System.out.println("欢  迎  使  用  迷  你  DVD 管  理  器");
  2.                 System.out.println("-----------------------------------------------");
  3.                 System.out.println("0. 借 出  排 行 榜");
  4.                 System.out.println("1. 新 增 DVD");
  5.                 System.out.println("2. 查 看 DVD");
  6.                 System.out.println("3. 删 除 DVD");
  7.                 System.out.println("4. 借 出 DVD");
  8.                 System.out.println("5. 归 还 DVD");
  9.                 System.out.println("6. 退 出 系 统");
  10.                 System.out.println("-----------------------------------------------");
  11.                 System.out.print("请选择:");</font>
复制代码
主要功能如上:所以,要选择一个正确的集合来保存DVD数据的对象;
DVD类的代
  1. // DVD类-------------------------------------------------------------------
  2. class DVD implements Comparable<Object> {
  3.         // DVD名
  4.         private String name;
  5.         // 是否可借
  6.         private boolean state = true;
  7.         // 借出时间
  8.         private String lendData;
  9.         // 借出次数
  10.         int count;

  11.         // DVD构造方法
  12.         DVD(String name) {
  13.                 this.name = name;
  14.         }

  15.         // 获取DVD信息
  16.         String getName() {
  17.                 return name;
  18.         }

  19.         boolean getState() {
  20.                 return state;
  21.         }

  22.         String getLendData() {
  23.                 return lendData;
  24.         }

  25.         // 借出本DVD
  26.         boolean lend(String lendData) {
  27.                 if (state) {
  28.                         this.lendData = lendData;
  29.                         state = false;
  30.                         count++;
  31.                         return true;
  32.                 } else {
  33.                         return false;
  34.                 }
  35.         }

  36.         // 归还DVD
  37.         void back() {
  38.                 state = true;
  39.                 lendData = null;
  40.         }

  41.         // 重载object的equals
  42.         public boolean equals(DVD obj) {

  43.                 return (this.getName().equalsIgnoreCase(obj.getName()));

  44.         }

  45.         // 实现DVD的可比性,实现Comparable接口,覆盖compareTo方法。
  46.         public int compareTo(Object obj) {
  47.                 if (!(obj instanceof DVD))
  48.                         throw new RuntimeException("发现非法DVD");
  49.                 DVD dvd = (DVD) obj;
  50.                 if (dvd.count > this.count)
  51.                         return 100;
  52.                 if (dvd.count < this.count)
  53.                         return -100;
  54.                 return this.getName().compareTo(dvd.getName());
  55.         }
  56. }
复制代码


要求有:
1,有序
2,唯一
3,考虑增删的效率




****************************************************
这里我使用的是TreeSet,
下面是集合,DVD类的部分代码
  1. <font face="微软雅黑"> // 拥有的DVD集合
  2.         TreeSet<DVD> myDVD = new TreeSet<DVD>();</font>
复制代码

万事开头难,选择一个重要的集合,在后面的还发中,是可以少走好多弯路的!
我开始就走过弯路,用了ArrayList,,
结果很悲剧。。。。。


这个问题可以横好的分析总结了各个集合的优势,,,所以新手可以一起参考下,,


如果你有更好的解决代码,可以和我分享,十分感谢。。。。


---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ----------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值