集合框架复习

来源:互联网 发布:linux 查看字体 编辑:程序博客网 时间:2024/06/05 17:19

Collection

       |--- List  元素的序列, 可以重复

               |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
               |--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
               |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
       |---Set  元素是无序的,不可以重复

               |--- HashSet, 底层数据结构是哈希表。是线程不安全的。不同步。通过hashCode和equals方法来保证元素唯一性

               |---TreeSet, 可以对Set集合中的元素进行排序。 底层数据结构是二叉树。保证元素唯一性的依据:compareTo方法

Map 元素为二元偶对的汇集,不能重复
      |--Hashtable底层是哈希表数据结构,不可以存入null键null值。线程同步,效率低。
      |--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,线程不同步,效率高。
      |--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。

TreeSet排序的两种方式:             

        一:让元素自身具备比较性。通过实现Comparable接口,覆盖compareTo方法。 

                这种方式也称为元素的自然顺序,或者叫做默认顺序。
        二:当元素自身不具备比较性时,或者具备的比较性不是所需要的, 这时就需要让集合自身具备比较性。

                定义比较器,实现Comparator接口,覆盖compare方法,将比较器对象作为参数传递给TreeSet集合的构造函数。

        当两种排序都存在时,以比较器为主。注意,排序时,当主要条件相同时,一定要判断次要条件。

 

map集合的两种取出方式:

 1,Set<k> keySet:将map中所有的键存入到Set集合。通过set的迭代器以迭代方式取出所有的键,

       再根据get方法,获取每一个键对应的值。
       Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。

 2,Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,这个关系的数据类型就是:Map.Entry
       Entry其实就是Map中的一个static内部接口。 Map.Entry下有这样两个方法:

             getKey()       返回与此项对应的键。 
             getValue()    返回与此项对应的值。