------- android培训、java培训、期待与您交流! ----------
以下仅为个人平时学习笔记,可能有有错误的地方,希望有看到者提出来,共同讨论,谢谢!
Collection:
1.List:元素是有序的,元素可以重复。因为该集合体系有索引。
a.ArrayList:底层的数据结构使用的是数组结构。查询速度快;增删慢。线程不同步。
b.LinkedList:底层使用的是链表数据结构。查询速度慢,增删快。
c.Vector(和ArrayList功能一样,被ArrayList替代了):底层也是数组数据结构。线程同步。
2.Set:元素是无序的(存入合取出的顺序不一定是一致的),元素不可以重复。
a.HashSet:底层结构是哈希表。线程是同步的。
**HashSet是如何保证元素唯一性的呢?
-->是通过元素的两个方法,hashCode和equals来完成的。如果元素的hashcode值相同,才会判断equals是否为true;如果元素的hashCode值不同,则不会调用equals。
********注意,对于判断元素是否存在以及删除等操作,依赖的方法是元素的hashCode和equals方法。
b.TreeSet:可以对Set集合中的元素进行排序。底层数据结构是二叉树。根据compareTo方法确定排序与重复。
****TreeSet排序的第一种方式:让元素自身具备比较性。元素需要实现Comparable接口,覆盖compareTo方法。这种方式也称为元素的自然顺序,或者叫做默认顺序。
****TreeSet排序的第二种方式:当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要集合自身具备比较性。在集合初始化时,就有了比较方式。(定义了比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。)
3.Map
Map也属于集合系统,但和Collection接口不同。Map是key对value的映射集合,其中key列就是一个集合。key不能重复,但是value可以重复。HashMap、TreeMap和Hashtable是三个主要的实现类。
|--HashTable:底层是哈希表结构,不可以存入null键null值.线程同步的.
|--HashMap:底层是哈希表结构,可以存入null键null值.不是线程同步的.(无序)
|--TreeMap:底层是二叉树结构.线程不同步,可以用于给map集合中的键进行排序.
1.put: 返回该键原来的值,若没有,返回null。
2.keyset: 将map中所有的键存入到Set集合。因为set具备迭代器。所以可以以迭代方式取出所有的键,再根据get方法,获取每一个键对应的值。