java集合类的类框图
一:基本概念对比
Set最为主要的特征是集合中的对象不按照特定的方式排序,并且没有重复的对象。
它的主要实现类包括:
HashSet类按照哈希算法来存取集合中的对象,速度较快。
LinkedHashSet类不仅实现了哈希算法,而且实现了链表的数据结构,提高了插入和删除的功能。
TreeSet类实现了SortedSet接口,具有排序的功能。
List主要特征是其元素以线型方式存储,集合中可以存放重复的对象
List的主要实现类包括:
ArrayList:代表长度可变的数组。可以对元素快速的随机访问。但是向ArratList插入或删除元素的速度较慢。
LinkedList:在实现中才用了链表的数据接口,对顺序访问进行了优化。向List中插入和删除数据的速度快,随即访问的速度较慢。
Map是一种把键对象和值对象进行映射的集合,他的每一个元素都包含一个键对象,一个值对象,键对象相当于值对象的索引,而且值对象仍然可以是Map类型的。
它的主要实现类为:
1. HashMap安装Hash算法来存取键对象,有很好的存取性能;为了保证HashMap能正常工作,和HashSet一样,要求键对象要覆盖的equals()方法和hashCode()方法。
2. TreeMap类实现了SortedMap接口,能对键对象进行排序。
二:List和Set排序
1:list中的排序要使用集合类工具Collections.sort()方法,该方法调用compareTo()。所以list中的对象要实现Comparable接口或者创建该对象的比较器(实现Comparator的类)。另外注意:list.contains()方法,在比较是调用list中对象的equal()方法,如果希望按照对象的某个属性比较的话,需要重写对象equal()方法。
2:要使Set具有排序功能,可以使用TreeSet。在实例化Set时,指定比较器。