Java是一种面向对象语言,如果我们要针对多个对象进行操作,就必须对多个对象进行存储。而数组长度固定,不能满足变化的要求。所以,java提供了集合。

集合与数组的区别

集合的长度可变,存储元素是引用类型,元素类型可以不一致;数组的长度是固定的,存储元素基本类型或者引用类型,元素必须保证一致。

JAVA中集合类的关系图

clob类型java新增 java中clob_迭代器

 


集合作为一个容器可以存储多个元素,但是由于数据结构的不同,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