zoukankan      html  css  js  c++  java
  • 一、基础篇--1.2Java集合-List、Set、Map区别

    List、Set、Map区别

    三者关系如下:

    集合关系
    结构特点

    1.List和Set是存储单列数据集合,Map是存储键值对这样的双列数据集合;

    2.List中存储的数据都是有序的,并且允许重复;Map中存储的数据是无序的,它的键是不允许重复的,值可以重复;Set存储的数据是无序的,并且不允许重复,元素在集合中的位置,是由元素的hashCode决定,位置是固定的。

    实现类

    1.基于List接口实现的类。

    1.linkedList

    基于链表实现,链表内存是散列的,增删快,查询慢

    2.ArrayList

    基于数组实现的,非线程安全,效率高,查询快,增删慢

    3.Vector

    基于数组实现的,线程安全,效率低,增删慢,查询慢,用到很少

    2.基于Set接口实现的类。

    1.HashSet

    基于HashMap实现,不允许集合中有重复的值,使用该方式时需要重写 equals()和 hash Code()方法;

    2.LinkedHashSet

    继承于 HashSet,同时又基于 LinkedHashMap 来进行实现,底层使用的是 LinkedHashMap。

    3.基于Map接口实现的类。

    1.HashMap

    基于 hash 表的 Map 接口实现,非线程安全,高效;

    2.HashTable

    线程安全,效率低,不支持null键和值

    3.LinkedHashMap

    是 HashMap 的一个子类,保存了记录的插入顺序;

    4.SortMap接口

    TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序

    区别

    List

    • 允许重复对象

    • 可以插入多个null元素

    • 是一个有序容器

    Set

    • 不允许重复对象

    • 无序容器,无法保证每个元素的存储顺序,TreeSet通过Comparator或者Comparable维护了一个排序的顺序

    • 只允许一个null元素

    Map

    • Map不是Collection的子接口或者实现类,Map是一个接口。

    • Map的键对象必须唯一,只允许存在一个null键。

    • TreeMap通过Comparator或者Comparable维护了一个排序的顺序。

  • 相关阅读:
    [初学Untiy]SPACE SHOOTER TUTORIAL
    [OpenGL]第一章 OpenGL概述
    DSAA 第一章 引论
    Learn Python The Hard Way(27--)
    linux 系统tty、pty和pts 的概念及区别
    stuffs of install ubuntu
    第八章、Linux 磁盘与文件系统管理
    第七章 Linux文件与目录管理
    切换不同的echarts时,出现图标缩小,报警告,Can’t get dom width or height!
    echarts x轴的纵向区域随便点击获取点击的x轴那一纵向区域的值
  • 原文地址:https://www.cnblogs.com/foreverYoungCoder/p/10304615.html
Copyright © 2011-2022 走看看