Java是一种面向对象语言,如果我们要针对多个对象进行操作,就必须对多个对象进行存储。而数组长度固定,不能满足变化的要求。所以,java提供了集合。
集合与数组的区别
集合的长度可变,存储元素是引用类型,元素类型可以不一致;数组的长度是固定的,存储元素基本类型或者引用类型,元素必须保证一致。
JAVA中集合类的关系图
集合作为一个容器可以存储多个元素,但是由于数据结构的不同,java提供了多种集合类。将集合类中共性的功能,不断向上抽取,最终形成了集合体系结构。 collection是List和Set的父接口 collection基本功能
1:添加功能
boolean add(Object obj): 添加一个元素 boolean addAll(Collection c): 添加一个集合的元素 2: 删除功能 void clear(): 移除所有元素 boolean remove(Object o): 移除一个元素 boolean removeAll(Collection c): 移除一个集合的元素 ( 是一个还是所有 ) 3: 判断功能 boolean contains(Object o) :判断集合中是否包含指定的元素 boolean containsAll(Collection c) :判断集合中是否包含指定的集合元素 ( 是一个还是所有 ) boolean isEmpty() :判断集合是否为空 4: 获取功能 Iterator iterator()用来获取集合中每一个元素 5: 长度功能 int size(): 元素的个数 6:交集功能 boolean retainAll(Collection c): 两个集合都有的元素 ? 7 :把集合转换为数组 Object[] toArray() (引申:数组转集合)List
有序的集合,允许重复元素存在
list集合特有功能
1. 添加功能 void add(int index,Object element): 在指定位置添加元素 2.获取功能 Object get(int index): 获取指定位置的元素 3.列表迭代器 ListIterator listIterator() : List 集合特有的迭代器 4.删除功能 Object remove(int index) :根据索引删除元素 , 返回被删除的元素 5.修改功能 Object set(int index,Object element): 根据索引修改元素,返回被修饰的元素List:ArrayList类和linkedList类
ArrayList
线程不安全,查询速度快。底层数据结构是数组结构
linkedList
线程不安全,增删速度快。底层数据结构是列表结构
Set
主要有两个常用的实现类:HashSet 类和 TreeSet类
取出元素的方法只有迭代器。不可以存放重复元素,元素存取是无序的。
HashSet:线程不安全,存取速度快。
依赖的是元素的hashCode方法和euqals方法来保证元素的唯一性
TreeSet:线程不安全,可以对Set集合中的元素进行排序。它的排序是如何进行的呢?通过compareTo或者compare方法中的来保证元素的唯一性。元素是以二叉树的形式存放的。
迭代器 Iterator(集合独有的遍历方式)
while for注意事项:
1.不能实例化的。只能接收集合类对象调用自己的iterator方法来生成的Iterator对象
2.是集合独有的遍历方式
3.迭代器Iterator有for,while两个个方法
4. 用来遍历集合时,需要hasNext()方法和next()方法配合使用
5.在遍历的过程中,不允许对集合进行增删操作。如果想要对集合进行删除操作,也必须调用迭代器的remove()方法
6.不要多次使用next



