zoukankan      html  css  js  c++  java
  • 集合(List、Set、Map)

    一、集合与数组

    数组:长度固定,数组元素可以是基本类型,也可以是对象。不适合在对象数量未知的情况下使用。

    集合:(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。

    Java集合类存放于 java.util 包中,是一个用来存放对象的容器。

    注意:

    ①、集合只能存放对象。比如你存一个 int 型数据 1放入集合中,其实它是自动转换成 Integer 类后存入的,Java中每一种基本类型都有对应的引用类型。

    ②、集合存放的是多个对象的引用,对象本身还是放在堆内存中。

    ③、集合可以存放不同类型,不限数量的数据类型。

    Collection接口(add()、contains()、size()、clear()、isEmpty()、addAll()、containsAll()、remove()、removeAll())

    子接口:List、Set

    List:有序、可重复(get(index)下标从0开始,set(index,element))

    Set:无序、不可重复集

    Iterator,所有的集合类,都实现了Iterator接口。

    1.hasNext()是否还有下一个元素。
    2.next()返回下一个元素。
    3.remove()删除当前元素。

     iterator的形式:
    Iterator it = arr.iterator();
    while(it.hasNext()){ object o =it.next(); ...}

    List转换为数组:toArray()

    数组转换为List:  Arrays.asList()

    集合的排序:Collections.sort()

    Vector和ArrayList

    vector是线程同步的,线程安全的。

    vector增长率为目前数组长度的100%

    arraylist增长率为目前数组长度的50%。

    Map(put()、get()、containskey()

    Map集合

    实现类:HashMap、Hashtable、LinkedHashMap和TreeMap

     

    HashMap

    根据键的HashCode值存储数据,无序,键唯一,值可重复,非同步的

    Hashtable

    HashMap的线程安全版,它支持线程的同步任一时刻只有一个线程能写Hashtable

    不允许记录的键或者值为null,同时效率较低。

    ConcurrentHashMap

    线程安全,并且锁分离。ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的hash table,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。

    LinkedHashMap

    LinkedHashMap保存了记录的插入顺序,在用Iteraor遍历LinkedHashMap时,先得到的记录肯定是先插入的,在遍历的时候会比HashMap慢,有HashMap的全部特性。

    TreeMap

    TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序(自然顺序),也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。不允许key值为空,非同步的

     

     

     

  • 相关阅读:
    【DNN发布包解释】package 包裹
    数据仓库 SSIS
    【DNN 系列】 添加模块后不显示
    GridView 绑定 ObjectDataSource
    【DNN 系列】 MVC 分页
    关于一级指针和二级指针的简单见解
    高效使用Vector
    关于autoptr
    (转)Win10 + VMware-CentOS7文件共享、网络连接
    Linux 笔记
  • 原文地址:https://www.cnblogs.com/zouhong/p/9445813.html
Copyright © 2011-2022 走看看