• 开发中使用集合的一些基本知识


    1.集合的由来

         单个数据,可以使用变量保存

        多个数据,可以使用数组保存

        使用数组的前提:

         1、要保存的数据的数据类型是一致的;

         2、要保存的数据的数量是已知的;

       那么存储多个数据的数量不确定的情况?

         ---- 使用集合

    2.集合和数组的区别

    数组:

    1、只能保存同一种类型的数据;

    2、数组一旦创建,容量不可改变;

    3、数组可以保存引用类型的数据和基本类型的数据;

     

    集合:

    1、可以保存不同类型的数据;

    2、集合可根据需要自动扩容;

    3、集合只能保存引用类型的数据;(为什么不能保存基本类型的数据)

           ---     向集合中添加基本类型的数据时,使用了自动装箱,实际添加的是该数据对应的包装类的对象

    3.

    4.Collection接口的一些特性

    1、Collection接口是集合框架中的根接口,它描述的集合框架中所有集合工具类最共性的行为;

    2、在集合框架中,有的集合类允许保存重复的元素,有些不允许保存重复的元素

    3、有的集合类,数据存放和取出的顺序是一致的,有的是无序的;

    4、这个接口很抽象,集合框架中没有它的直接实现类,而是一般都实现它的子接口;

    5、因为这个接口很抽象,所以为了不同的需求,定义了不同的子接口扩展它;

    5.Collection接口的一些方法

    6.List接口

    1、List接口的实现类,表示的容器里面保存的数据都是有序的(注意:这里说的有序,指的是,元素保存的顺序是有序的,和元素添加的顺序是一样的);

    2、List接口的实现类,里面的元素像数组一样,都有索引

    3、List接口实现类表示的容器,里面可以保存重复的元素

    4、List接口定义了特殊的迭代器,对Iterator进行了扩展,可以双向迭代,等等;

    三个比较常用的类:

    ArrayList;LinkedList;Vector;(实现类)

    ArrayList

    1、ArrayList底层使用数组保存数据;

    2、ArrayList里面允许存在null元素;

    3、ArrayList和Vector类似,只是ArrayList是非线程安全的;

    LinkedList

    1、LinkedList底层使用双端链表的数据结构保存数据;

    2、LinkedList的独有方法,主要是围绕链表的头和尾操作;

    3、LinkedList也允许Null元素;

     

    7.set接口

    1、Set集合不包含重复元素;

    2、一般Set集合判断两个元素是否相等,是通过equals方法判断的;

    3、如果集合中可以保存null,那么这个集合中最多只能由一个null;

    4、Set接口中没有对Collection接口扩展更新的功能;

    常用实现类

    HashSet

    1、HashSet集合底层使用哈希表保存数据;

    2、HashSet集合,添加数据的顺序和存储、获取的顺序不一致;

    3、可以添加null元素,最多只能由一个null元素;

         --- 这里元素唯一性的原理是

             HashSet集合容器在保存对象时,会先调用对象的hashCode方法,获取对象的哈希码,判断应该将对象保存在哈希表中的哪个区域,然后遍历该区域的所有对象,通过equals方法判断是否有重复的元素;如果有,就不再保存;所以可以保证保存在容器中的数据都是唯一的;

    LinkedHashSet

    1、使用LinkedHashSet集合对象保存的数据,添加数据的顺序和迭代数据的顺序是一样的;

    2、在LinkedHashSet底层,有一个哈希表和一个链表,哈希表负责保存数据和维护数据的唯一性;链表负责记录数据添加的顺序;

    3、如果新添加数据时发现已经有相同的数据了,新的数据就不会再被添加;

    TreeSet

    1、TreeSet集合中保存的数据都是有序的,这里的有序指的是对元素进行了排序;

    2、排序使用的是元素的自然顺序或者是创建集合对象时提供的Comparator排序;

    以上单列数据集合总结:

    8.Map集合

    Map集合也是用来保存对象的,但和Collection集合只能一个个保存对象不同,Map集合一次保存的是一对对象,按照

    键(K)——值(V)    对的关系保存;

    Map集合的特点:

    1,  Map集合中存储的是key-value的映射关系;

    2,  Map集合中的每个映射包含键和值两个对象,同时映射本身也是一个对象,使用Map.Entry类描述;

    3,  Map集合中的key必须保证唯一,不能重复,但值可以重复;

    4,  Map集合中key和value都可以是null元素,但是key只能有一个null;

    5,  Map集合不能直接遍历,只能通过键集、值集或键值对集遍历;

     

     

  • 相关阅读:
    Scalaz(15)- Monad:依赖注入-Reader besides Cake
    Scalaz(14)- Monad:函数组合-Kleisli to Reader
    Scalaz(13)- Monad:Writer
    Scalaz(12)- Monad:再述述flatMap,顺便了解MonadPlus
    Scalaz(11)- Monad:你存在的意义
    Scalaz(10)- Monad:就是一种函数式编程模式-a design pattern
    Scalaz(9)- typeclass:checking instance abiding the laws
    Scalaz(8)- typeclass:Monoid and Foldable
    Scalaz(7)- typeclass:Applicative-idomatic function application
    Scalaz(6)- typeclass:Functor-just map
  • 原文地址:https://www.cnblogs.com/mr-wuxiansheng/p/6155054.html
Copyright © 2020-2023  润新知