- 为什么出现集合类
-
- 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合类就是存储对象最常用的一种方式。
- 数组和集合类是容器有何不同
-
- 数组虽然可以存储对象,但长度是固定的:集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象。
- 集合类的特点
-
- 集合只用于存储对象。集合长度是可变的,集合可以存储不同类型的对象。
集合框架图
- Iterator
-
- iterator接口的实现定义在集合内部,这样取出方式就可以直接访问集合内容的元素。那么取出方式就被定义成了内部类。而每一个容器的数据结构不同,所以取出的动作细节也不一样。但是都有共性内容判断和取出。那么可以将写共性抽取。那么这些内部类都符合一个规则。该规则就是Iterator。
- 如何获取集合的取出对象呢?通过集合一个对待提供的方法。iterator()。
- Collection
-
- List:元素是有序的,元素可以重复。因为该集合体系有索引。
-
- ArrayList:底层的数据结构使用的是数据结构。1.2出现
-
- 查询速度很快。
- 增删稍慢。
- 线程不同步。
- 默认长度为10增长率为50%。
- LinkedList:底层使用的链表数据结构。
-
- 增删速度很快。
- 查询稍慢。
- Vector:底层是数组数据结构。1.0出现
-
- 线程同步
- 被ArrayList替代了。
- 长度增长率100%。
- ListIterator
-
- List集合特有的迭代器。ListIterator是Iterator的子接口。在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常(并发异常)所以,在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。该接口只能通过List集合的listIterator方法获取。
- Set:元素师无序的,元素不可以重复。该集合没有索引。
-
- HashSet:底层数据结构式哈希表。
-
- HashSet是如何保证元素的唯一性的呢?
-
- 是通过元素的两个方法,hashCode和equals来完成。如果元素的HashCode值相同,才会判断equals是否为true。如果元素的hashCode值不同,不会调用equals。
- 注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法。
- TreeSet:底层数据结构式二叉树。注:添加元素必须实现Comparable接口或在实例TreeSet时指定比较器
-
- 可以对Set集合中的元素进行排序。保证元素唯一性的依据:compareTo方法return 0;
- TreeSet排序的第一种方式:让元素自身具备比较性。元素需要实现Cmparable接口,覆盖compareTo方法。这种方式也称为元素自然排序,或者叫做默认排序。
- TreeSet的第二种排序方式。
-
- 当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要让集合自身具备比较性。在集合初始化,就有了比较方式。
- 当两种排序都存在时,以比较器为主。
- 定义一个类,实现Comparator接口,覆盖compare方法。
-
- Properties
-
- Properties是hashtable的子类。也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。是集合中和IO技术相结合的集合容器。
- 该对象特点:可以用于键值对形式的配置文件的读取存储。
- properties.load(Reader reader);来通过load方法将读取的配置信息添加到集合中。