zoukankan      html  css  js  c++  java
  • 各种集合类的区别以及原理

    集合区别:

    list:(有序可重复)

      ArrayList:底层实现是数组,但是没有定义具体的长度和大小,有下标,所以查询快,增删慢,线程不安全

      LinkedList: 底层是链表,因为有指针所以增删快查询慢,线程不安全

      Vector:底层是数组,线程安全,有下标所以查询快增删慢,有synchronized修饰,现已被ArrayList替代

    Set:(无序不重复)

      HashSet:底层是hash表结构,实现了set接口,其实是基于hashMap实现的,不能有null值,在添加数据时(add方法),会调用对象的hashcode()方法在set中去查找,比较要添加的值和set中的值若是hash值相等,若是相等则用equals方法比较,如果不相等,则添加(说明没有重复的值)

      TreeSet:底层是二叉树结构,不可以存重复对象,根据数据自身进行排序,如果没有可比性,则实现comparable接口重写compareTo方法(该方法是使某个对象具有可比性),也可重写compartor接口重写compare方法(该方法是使某个集合具有可比性)

    Map(存键值对)

      HashMap:底层是哈希表(数组+链表)结构,线程不安全,可以存一个null键和多个null值,若要线程安全则Collections.synchronizedMap()方法,在添加新值的时候(put)会去计算将添加key值的hashCodehashCode%length = i,要存的entry,若此时entry上已经有值了那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放在链尾。如果数组该位置上没有元素,就直接将该元素放到此数组中的该位置上。

      HashTable:底层是哈希表(数组+链表)结构,线程安全,不可以存null键或者null

      TreeMap:底层实二叉树结构,可以存重复对象,实现comparable接口重写compareTo方法(该方法是使某个对象具有可比性),也可重写compartor接口重写compare方法(该方法是使某个集合具有可比性)

  • 相关阅读:
    Codeigniter:如何写一个好的Model
    CodeIgniter
    CodeIgniter
    Codeigniter CRUD代码快速构建
    html适配Anroid手机
    使用malloc分别分配2KB,6KB的内存空间,打印指针地址
    大话spring.net之IOC
    Spring2.5学习3.3_@Autowire注解实现手动装配
    OPPO通过AWS节约大量成本提供海外服务
    mysql 父子结构排序
  • 原文地址:https://www.cnblogs.com/rgever/p/8887548.html
Copyright © 2011-2022 走看看