集合(八)

来源:互联网 发布:零基础学javascript 编辑:程序博客网 时间:2024/06/06 03:08


1.使用集合的目的?

   使用可变长度的容器来存储对象。

2.集合和数组的区别?

   集合:变长、只存储对象、同一集合可存储不同对象

   数组:定长、可存储任意类型(使用泛型时只可以存储泛型指定的类型)、同一数组只可以存储一种类型

3.单列集合:

   统治者:Collection

   通用迭代器:Iterator(只有实现了Iterator接口或者ListIterator的集合才可使用增强for循环)。此迭代器除了迭代只可以对集合进行删除操作,还支持双向迭代

   List家族的迭代器:ListIterator,此迭代器可以对元素进行增删查改操作;

    小插曲:使用迭代器的时候不可使用集合自己的方法对集合进行操作,否则出现并发修改异常;

   各司其职的官员:

   List(有序可重复,可以通过索引值操作元素)----Vector(有两种迭代器,线程安全,不推

                                                   荐使用)

                                          -----ArrayList

                                          ------LinkedList

  Set(无序不可重复)-----HashSet:散列存放(查询速度快)----LinkedHashSet:有序

                 -----TreeSet:有序存放(自然排序:实现Comparable接口;外置比较器:实现Comparator接口)

 

小插曲:HashSet:集合往集合里存储数据每次都要都要调用hashCodeequals方法,注意,两个对象的equals相等时,应该保证哈希值也相等,否则会出现对象存入集合删不掉的情况,这样会导致内存泄露;

4.双列集合:

  统治者:Map

  Map内部接口:Map.Entry封装键值对

  各司其职的官员:

   Map(键值对,键不可重复)---HashMap

                             ---TreeMap

  输出方式:借助单列集合的迭代方式

           Map->Map.Entryset集合-->迭代set集合得到键值

           Map->Mapkey集合-->迭代set集合得到键从而得到值

5.工具类Collections提供了各种操作集合的方法,如排序、查找元素等。

   小插曲:Arrays是数组的工具类

    public static  List asList(Object... a)返回的是一个固定长度的集合,不可再添加元素

0 0
原创粉丝点击