代码改变世界

8月22讲课记录

2006-08-22 21:07  java ee spring  阅读(189)  评论(0编辑  收藏  举报
1.用自己的话描述清楚什么是集合,集合的重要性,集合应该提供的方法(CRUD)
2.看Collection的帮助,介绍一下Bags的概念
3.Set集合的概念,介绍HashSet和TreeSet的区别,由AbstractSet.removeAll方法引出模板方法设计模式(父类的方法完成了业务流程,这个业务流程调用了其他的方法,其他的方法是抽象的,由子类去具体完成),由TreeSet(Comparator)构造方法引出策略模式(将比较大小的任务委托给专门的比较器去完成)。顺便介绍了“尽量使用组合,避免使用继承”和“闭合原则”,不仅仅是原则,而应该作为设计目标去追求。
4.HashSet按照hashcode值的某种运算方式进行存储,而不是直接按hashCode值的大小进行存储。例如,
"abc" ---> 78,"def" ---> 62,"xyz" ---> 65在hashSet中的存储顺序不是62,65,78,这些问题感谢以前一个叫崔健的学员提出,最后通过查看源代码给他解释清楚,看本次培训学员当中有多少能看懂源码。
LinkedHashSet按插入的顺序存储,那被存储对象的hashcode方法还有什么作用呢?学员想想!hashset集合比较两个对象是否相等,首先看hashcode方法是否相等,然后看equals方法是否相等。new 两个Student插入到HashSet中,看HashSet的size,实现hashcode和equals方法后再看size。
5.借助HashSet讲解了J2SE 5.0中的泛型,接着用public boolean equals(Student obj)引出equals方法的问题,并讲解了如何通过J2SE5.0的@Override注解来避免这种问题。
6.j2se5.0中的for循环增强语句。
7.学员问题:build.xml文件中使用<property>元素引用一个property文件时,property文件中不能出现中文注释的解决办法,引出了native2ascii命令的讲解。看Property类的帮助,可以连接到native2ascii的帮助。
8.同一个对象可以在Vector中加入多次。往集合里面加元素,相当于集合里用一根绳子连接到了目标对象。
9.写出下面的综合代码,加强对集合,泛型,for循环增强的理解:
  HashMap<String,Integer> hm = new HashMap<String,Integer>();
  hm.put("zxx",19);
  hm.put("lis",18);
  
  Set<Map.Entry<String,Integer>> mes= hm.entrySet();
  //Map.Entry<String,Integer> me;//不能这样!
  for(Map.Entry<String,Integer> me : mes)
  {
   System.out.println(me.getKey() + ":" + me.getValue());
  }