List派系的特点: l 这个派系允许存储重复元素 , 重复 l 这个集合中的所有元素具有下标,下标 l 这个集合是有序的,有序的意义是,怎么存进去,就怎么取出来,有序 1. ArrayList类 List派系,具有List特点,有序,下标,重复 ArrayList类的自己的特点: l 底层数据结构是 可变数组 l 初始化数组容量10个,每次增长50% l 数据的查询快,增删慢 l 线程不安全,不是同步,运行速度快 2. Vector类 Vector类出现的版本是JDK1.0,集合框架List,出现在JDK1.2,从1.2开始改为实现List接口。类名不能改,版本向下兼容。 Vector类底层数据结构,可变数组 数组的初始值也是10个,增长率100% 线程安全的,同步的,执行速度慢 JDK1.2开始,此类有ArrayList取代。 3. LinkedList集合 特点:数据存储结构,是链表结构,查询慢,增删快,线程不安全,速度快 Set接口派系 Set接口特点:不允许重复元素,没有下标,无序集合(怎么存的,未必怎么取来),Set接口中的抽象方法,和他的父接口Collection一样,因此,不需要单独学习Set接口方 法。Set接口的子类对象的存储和取出 1. HashSet集合 底层数据结构哈希表,线程不安全,执行效率快,可以存null 存储的就是对象的哈希值,因此哈希表,如果两个对象的哈希值不同,直接判定为不同对象,就存储了,如果两个对象的哈希值一样,HashSet集合,调用后来的对象的equals方法,把哈希值相同的对象,当作参数传递进来,如果equals返回true,同一对象不存,如果equals方法,返回false,不同对象,后进来的,挂在先进来的对象的下面,形成了桶. HashSet集合保证对象的唯一性,依靠的是对象中的hashCode和equals方法 2. TreeSet集合 无序集合,没有下标,不重复,TreeSet集合,会对存储的对象,进行排序 TreeSet线程不安全集合,执行效率高。 底层数据结构,二叉树 TreeSet存储了自定义对象,运行的时候出现了类型转换异常,不能被转成java.lang.Comparable类型。 原因:Person类,不具备比较性,也就是没有自然顺序,因此集合不能排序。Person类有自然顺序,必须实现接口Comparable。 自定义自然顺序,按照姓名比较为主要顺序,年龄为次要顺序 3. LinkedHashSet
基于链表的哈希表实现,存储到这个集合的对象,必须实现hashCode和equals方法,保证对象的唯一性。线程是不安全,执行效率高。这个集合,保证了迭代顺序,怎么存的就是怎么取出来。JDK1.4才出现的
|