ArrayList LinkedList Set HashMap介绍

2023-11-09

    在Java中提供了Collection和Map接口。其中List和Set继承了Collection接口;同时用Vector、ArrayList、LinkedList三个类实现List接口,HashSet、TreeSet实现Set接口

。直接有HashTable、HashMap、TreeMap实现Map接口。

    Vector基于Array的List,性能也就不可能超越Array,并且Vector是“sychronized”的,这个也是Vector和ArrayList的唯一的区别。
    ArrayList:同Vector一样是一个基于Array的,但是不同的是ArrayList不是同步的。所以在性能上要比Vector优越一些。适用于顺序性的查找
    LinkedList:不同于前面两种List,它不是基于Array的,作为链表数据结构方式,所以不受Array性能的限制。当对LinkedList做添加,删除动作的时候只要更改nextNode的

相关信息就可以实现了,所以它适合于进行频繁进行插入和删除操作。这就是LinkedList的优势,当然对于元素的位置获取等方面就逊色很多。

    List:
        1. 所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。
        2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];
        3. 所有的List中可以有null元素,例如[ tom,null,1 ];
        4. 基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作。

   

 

     虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是Set和List的

根本区别。
    HashSet:HashSet的存储方式是把HashMap中的Key作为Set的对应存储项,HashMap的key是不能有重复的。HashSet能快速定位一个元素,但是放到HashSet中的对象需要实现

hashCode()方法。
    TreeSet:将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的。TreeSet不同于HashSet的根本是TreeSet是有序的。它是通过SortedMap来实现的。
    Set总结: 1. Set实现的基础是Map(HashMap);
              2. Set中的元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象,不能包含两个元素e1、e2(e1.equals(e2))。

 

 

    Map是一种把键对象和值对象进行关联的容器,Map有两种比较常用的实现: HashTable、HashMap和TreeMap。
    HashMap也用到了哈希码的算法,以便快速查找一个键,
    TreeMap则是对键按序存放,因此它有一些扩展的方法,比如firstKey(),lastKey()等。
    HashMap和Hashtable的区别。
          HashMap允许空(null)键(key)或值(value),由于非线程安全,效率上可能高于Hashtable。
          Hashtable不允许空(null)键(key)或值(value)。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ArrayList LinkedList Set HashMap介绍 的相关文章

随机推荐

  • VLAN间路由及路由器下连接交换机的配置方法

    方法一 建议路由器下连接三层交换机 例如Cisco3650 大体思路是 三层交换机与路由器之间建立OSPF邻居 将交换机上的Vlan三层网段宣告出来 Vlan中主机的默认网关设置为Vlan三层网段实现Vlan间互通以及对外通信 其中 Vla
  • 关于火星坐标系统

    转载 关于火星坐标系统 2011 09 08 23 11 57 分类 默认分类 字号 订阅 偶然得知中国有一种火星坐标系统 其原理是这样的 保密局开发了一个系统 能将实际的坐标转换成虚拟的坐标 所有在中国销售的数字地图必须使用这个系统进行坐
  • 显示Hello World

    C 语言 include iostream using namespace std int main cout lt lt Hello World lt
  • 没有编程基础,可以自学Python吗?

    可以 Python是一门简单优雅的计算机程序设计语言 自身的特点决定了它是一门易学难精的语言 所以对于零基础学员而言 只要肯努力 学习是没有问题的 下面说说相比于C语言 Java语言 Python的特点 Python语法简单 代码可读性高
  • 性能监控-influxDB+grafana+jmeter展示测试结果

    InfluxDB 是 Go 语言编写的时间序列数据库 用于处理海量写入与负载查询 涉及大量时间戳数据的任何用例 包括 DevOps 监控 应用程序指标等 我认为 InfluxDB 最大的特点在于可以按照时间序列面对海量数据时候的高性能读写能
  • 高数【求导】--猴博士爱讲课

    第三课 求导 1 5 照公式求导 常见的求导 2 5 隐函数求导 例 1 若 y y
  • spring Aop嵌套调用的解决办法

    众所周知 Spring AOP在同一个类里自身方法相互调用时是无法拦截的 问题示例代码 public String say String a System out println say a a say2 a return a a publ
  • px、em、rem、rpx 用法 与 区别

    这篇文章记录前端 包含小程序 开发中常用到的几个单位 px em rem rpx 的区别和用法 px px像素 Pixel 相对长度单位 像素px是相对于显示器屏幕分辨率而言的 PX特点 1 IE无法调整那些使用px作为单位的字体大小 2
  • 消息中间件 RocketMQ 源码解析:Message拉取&消费(上)

    摘要 原创出处 http www iocoder cn RocketMQ message pull and consume first 芋道源码 欢迎转载 保留摘要 谢谢 本文主要基于 RocketMQ 4 0 x 正式版 1 概述 2 C
  • std::vector push_back报错Access violation

    C C code 1 2 3 4 5 6 7 8 9
  • 简单聊聊FPGA的一些参数

    笔者 E林1010 在上一篇中 我们已经知道了 FPGA的几个主流厂家和其中Intel家族中FPGA的系列的分类 上一篇文章链接 https mp weixin qq com s 1YufdRZ3Kvvk1znDGu69Og 本文微信公众号
  • word无法显示图片的问题终于搞定!oh yeah!

    我的word中的图片只显示一个方框 这个问题困扰我有一段时间了 今天终于搞定 原因如下 Word中不能显示公式 问 在Word 2003中编辑好的公式无法显示 只显示为一个方框 该怎么办 答 Word把使用公式编辑器输入的公式作为图形处理
  • SPECCPU 2017测试指导

    一 依赖包下载安装 安装前需要安装依赖包 可通过本地源进行安装 yum install gcc gfortran 离线场景下需要外网下载好后传到本地再安装 Deepin gfortran安装包手动安装3个gfortran的包 可选 yum
  • UDS应用层协议解析(史上最全)

    UDS应用层协议解析 UDS应用层协议解读 下 诊断服务分类 基础服务类 0x10 诊断会话模式 任何会话模式切换至默认会话模式时 非默认会话模式下设置的状态需要reset 28服务 85服务设置的状态需要恢复至默认状态 27服务解锁状态需
  • Win平台搭建WordPress环境

    Win平台搭建WordPress环境 WordPress是一个开源流行的个人信息发布平台 使用PHP编写 现在有众多的网站都使用WordPress来搭建的 同时WordPress还提供了大量的插件 能够帮助人们搭建个性化的网站 安装PHP
  • 在IntelliJ IDEA上使用Maven创建Spring项目HelloWorld

    因为IDEA自带Maven插件 所以使用IDEA是不需要在下载Maven的文件的 也可使用自己下载的Maven Spring我们则是通过Maven来下载构建 所以不需要下载jar包的 大神勿喷 请自行绕道 本博客面向第一次接触spring的
  • 使用Python绘制语音信号的波形图

    improt library import numpy as np import wave import pylab as pl download open souce audio in http www voiptroubleshoote
  • (一)基于物联网的智能安防监控机器人2207231212569

    基于物联网的智能安防监控机器人2207231212569 项目摘要 机器人是人类一直期待的东西 但自动化的东西有点不同 理想情况下 机器人能够做的事情比自动化机器人想做的要多得多 自动化机器人希望实现监控和制造商想要实现的另一主要可用性 但
  • 【六袆 - Dubbo】Dubbo服务的简单调用;

    这里写目录标题 1 Dubbo服务的基本调用过程 1 1在Java中定义dubbo服务 以interface接口的方式 1 2 Provider提供服务的具体实现 并声明为dubbo服务 1 3 Consumer使用dubbo服务 1 Du
  • ArrayList LinkedList Set HashMap介绍

    在Java中提供了Collection和Map接口 其中List和Set继承了Collection接口 同时用Vector ArrayList LinkedList三个类实现List接口 HashSet TreeSet实现Set接口 直接有