java面向对象编程笔记:Java中的集合(15)计算机等级考试

文章作者 100test 发表时间 2010:01:01 12:23:01
来源 100Test.Com百考试题网


  1.集合的特点:

  都位于 java.util包中,不能存放基本类型的数据,而只能存放对象的引用,操作的数目可以不固定(类似于动态数组)。

  2.分类:

  有三个类:

  a.Set(集):对象不按特定方式排序,没有重复元素。这个与数学中的集合概念最相似。

  b.List(列表):按照索引位置排序,可以有重复元素,允许按照对象在集合中的索引位置检索对象。

  c.Map(映射):每一个元素包含一个键值对。没有重复的键值对,但是值对象可以重复。

  有两个接口:

  Collection接口适用于Java集合中的Set和List(这两个类直接继承了这个接口),提供了一些通用操纵的静态方法。

  Iterator接口隐藏了底层集合的数据结构,对外提供了遍历各种数据类型集合的统一接口。由collection集合的iterator得到一个Iterator。语法如下:

  Iterator it = set.iterator().

  (注意此后若通过collection方法修改了集合则使用next()方法时会出现异常,因为其运用了所谓快速失败机制。避免了潜在的共享资源竞争而导致的并发问题)。

  3.Set集合:

  主要有两个实现类:HashSet和TreeSet。

  前者使用哈希算法,存取速度快,它还有一个子类LinkedHashSet类,性能更高。HashSet向集合中加入一个对象时,会调用对象的hashCode()方法得到哈希码,然后根据这个哈希码计算出对象在集合中的存放位置。

  为了保证其能正常工作,要求当两个对象用equals()方法比较的结果为true时它们的哈希码也必须相同。这就要求我们如果在我们自己设计的类中覆盖了equals方法,那么也也应该覆盖hashCode()方法。用equals()方法比较的结果为false时,最好hashCode不同,减少哈希冲突,提高性能。

  而后者则实现了SortedSet接口,具有排序功能。由于用户属性变化不会导致重新排序,所以适合加入不可变类。向其中加入自定义的类时要注意,实现其Comparable接口,并且euqals()得出的结论要与compareTo()得出的结论相同。另外,它还支持Comparator接口,可以定义一个实现了该接口的类CustomerComparator实现自定义的排序。在定义时使用如下的语法:


 Set

相关文章


HttpClient实现COOKIE方法计算机等级考试
System.arraycopy方法的使用计算机等级考试
多线程中的死锁举例与分析计算机等级考试
Java解析XML文件的四种方法计算机等级考试
java面向对象编程笔记:Java中的集合(15)计算机等级考试
半斤八两(一个有趣的java题)计算机等级考试
程序员要掌握的十个JSP中的标签库计算机等级考试
用JS验证日期的格式并比较日期大小计算机等级考试
计算机二级java辅导:浅谈输入输出流计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛