• Java基础


    一、Collection接口

    1、List接口 ,Set接口

    2、ArrayLIst,LinkedList,Vector,Stack

    3、HashSet,LinkedHashSet,TreeSet

    二、Map接口

    1、HashMap,LinkedHashMap,TreeMap;

    三、Iterator 与 ListIterator

    1、ListIterator有add()方法,可以向List中添加对象,而Iterator不能

    2、ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以。

    3、ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。

    4、都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。

    集合特性:

    1、是否允许空

    2、是否允许重复数据

    3、是否有序,有序的意思是读取数据的顺序和存放数据的顺序是否一致

    4、是否线程安全

    底层实现

    ArrayList:动态数组(动态扩容),初始容量:10

    LinkedList:循环双向链表

    HashMap:初始容量:16

    数组+链表(JDK1.8前)

    HashMap 在底层将 key-value 当成一个整体进行处理,这个整体就是一个 Entry 对象。HashMap 底层采用一个 Entry[] 数组来保存所有的 key-value 对,当需要存储一个 Entry 对象时,会根据hash算法来决定其在数组中的存储位置,在根据equals方法决定其在该数组位置上的链表中的存储位置;当需要取出一个Entry时,也会根据hash算法找到其在数组中的存储位置,再根据equals方法从该位置上的链表中取出该Entry。

    数组+链表+红黑树实现(JDK1.8中)

    LinkedHashMap:

    LinkedHashMap和HashMap的区别在于它们的基本数据结构上,看一下LinkedHashMap的 Entry 继承了 HashMap中的 Entry,并添加了 before,after 前置节点后后置节点 来实现链表;

    并发集合

    ConcurrentHashMap:锁分段技术

    总结:

    1、List中的数据可重复,Set中的数据不可重复;

    2、Array,Linked,Tree,Stored前缀的都有序,否则无序;

    3、带Hash的,都是通过hashcode值定位存储的;

    4、带Linked的,都是通过链表维持顺序的;

    5、Vector,HashTable 是线程同步的,其他是 非同步的;

    参考资料:

    java集合框架综述

    Java集合

    Java集合之ArrayList

    Java集合之LinkedList

    Java集合之HashMap

    Java集合之LinkedHashMap

    ConcurrentHashMap原理分析

  • 相关阅读:
    pip 8 安装
    zabbix server配置文件
    双代号网络图、双代号时标网络图
    logrotate
    tsql 执行存储过程
    dos 加用户
    Visual Studio (VS IDE) 你必须知道的功能和技巧
    格式化数字字符串 与C#变量
    .NET中的字符串你了解多少?
    新手如何有效地学习.NET
  • 原文地址:https://www.cnblogs.com/wangwangfei/p/13217249.html
Copyright © 2020-2023  润新知