黑马程序员技术交流社区

标题: [原创]DVD管理系统项目--核心集合的选择问题 [打印本页]

作者: 万琪    时间: 2013-6-16 16:01
标题: [原创]DVD管理系统项目--核心集合的选择问题
本帖最后由 Super_Class 于 2013-6-18 20:17 编辑

[原创]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数据的对象;


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




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

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


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


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


另外,下一步会遇到的问题是:集合排序的动态刷新问题。。。
我明天会把代码贴过来让大家帮忙解决!

作者: 万琪    时间: 2013-6-16 16:03
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. }
复制代码

作者: 万琪    时间: 2013-6-17 15:54
。。没人顶。。没动力啊,,,{:soso_e129:}

怎么修改成已解决?。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2