Map List Map的主要区别如下:

set List 是实现了Collection接口的子接口;Map本身就是一个接口;

list数据存放时有序的,允许有重复元素;set数据存放时无序的,不允许有重复数据;map是以键值对的形式存放,存放是无序的,key值不允许有重复的,value值可以有重复的;

list里面可以有任意的null值;set数据只允许有一个null值,如果多个数据都是null,那么只存在一个;map的key值只能有一个null值,value值可以有任意数量的null值;

实现类(只说几个平时在用的)

list:ArrayList,LinkedList

set:HashSet,TreeSet

Map:HashMap,TreeMap

ArrayList和LinkedList的区别

  ArrayList底层为数组结构,数据存在内存中的地址是连续的,所以查询效率高,直接用数组下标就可以得到数据,而插入,删除要移动操作位置前后的元素。

LinkedList底层为链表结构,数据存在内存中的地址不是连续的,查询的时候需要通过指针一个一个去查找,效率没有ArrayList高,但是插入,删除操作的时候,只需要改变指针的指向即可,不需要移动操作位置前后元素。

ArrayList费空间的地方就是真实的数组长度要大于实际存储的元素的长度,为了方便添加数据;而LinkedList费空间的地方是一个位置要存本身的数据还有存指向前后的指针;

HashMap和HashTable的区别

HashMap不是线程安全的,HashTable是线程安全的,内部的方法都是用synchronized修饰的,所以HashMap效率要比HashTable高;

HashMap允许键值为null,HashTable不允许,只要有为null就会报空指针;

Map List Set的区别的更多相关文章

  1. Java中集合List,Map和Set的区别

    Java中集合List,Map和Set的区别 1.List和Set的父接口是Collection,而Map不是 2.List中的元素是有序的,可以重复的 3.Map是Key-Value映射关系,且Ke ...

  2. map和flatmap的区别+理解、学习与使用 Java 中的 Optional

    转自:map和flatmap的区别 对于stream,   两者的输入都是stream的每一个元素,map的输出对应一个元素,必然是一个元素(null也是要返回),flatmap是0或者多个元素(为n ...

  3. HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的原理和区别

    HashMap 是否是线程安全的,如何在线程安全的前提下使用 HashMap,其实也就是HashMap,Hashtable,ConcurrentHashMap 和 synchronized Map 的 ...

  4. js es6 map 与 原生对象区别

    区别 object和Map存储的都是键值对组合.但是: object的键的类型是 字符串: map的键的类型是 可以是任意类型: 另外注意,object获取键值使用Object.keys(返回数组): ...

  5. map泛型 map不指定泛型 与 Map<Object,Object>的区别

    map泛型 map不指定泛型 与 Map<Object,Object>的区别 private void viewDetail(){ Map map1 = new HashMap(); Ma ...

  6. java8Stream map和flatmap的区别

    map和flatmap的区别 map只是一维 1对1 的映射 而flatmap可以将一个2维的集合映射成一个一维,相当于他映射的深度比map深了一层 , 所以名称上就把map加了个flat 叫flat ...

  7. JS中map与forEach的区别

    很多同学可能对于map与forEach的区别不是太了解,今天我们介绍一下JS中的map与forEach方法, 我对map的理解是,这个方法对一个数组arr1中的每一个元素进行遍历(传递给一个数组,参数 ...

  8. 原 c++中map与unordered_map的区别

    c++中map与unordered_map的区别 头文件 map: #include < map > unordered_map: #include < unordered_map ...

  9. for, for in, for of, map, forEach 循环的区别:

    for, for in,  for of, map, forEach 循环的区别: for  遍历数组: //对象遍历数组 var arr = [ {Monday: '星期一', Tuesday: ' ...

  10. JS002. map( ) 和 filter( ) 的区别和实际应用场景(递归函数、深度优先搜索DFS)

    在开发过程中难免会碰到省市区级联的操作,一般后端人员是不愿意将中文储存在数据库的. 由于应用页面较多,我们在通过区域Code写查字典函数时应该注意函数的 时间复杂度 / 空间复杂度. 如果用三层for ...

随机推荐

  1. 在CentOS7.5上安装Docker,在Docker中拉取CentOS7.5镜像并安装SSH服务

    # 安装docker yum install -y docker # 启动docker systemctl start docker # 加入开机启动 systemctl enable docker ...

  2. CefSharp 屏蔽右键菜单

    既然是C#+web混用模式,当然就需要把web的右键操作屏蔽掉咯.废话不说了直接上代码. internal class MenuHandler : IMenuHandler { public bool ...

  3. Graylog-Sidecar

    收集linux日志-filebeat 安装sidecar 下载graylog-sidecar-1.0.2-1.x86_64.rpm rpm -ivh graylog-sidecar-1.0.2-1.x ...

  4. linux命令:set 指定行,直接替换并修改文件

    sed 命令: 指定行,从第一行到第一行: 把该行的ssd,换成cd: -i 表示的是替换并直接修改文件: sed  -i  '1,1s/ssd/cd/g' test_file 命令使用: sed - ...

  5. NGUI里的sprite和label有白色的边框

    问题描述:NGUI里的sprite和label有白色的边框,而原图一切正常 如图: 解决方案: 给Sprite 边缘左右更增加1,这样拉伸的时候就忽略了左右1的位置,图片就不会显示白色边框了

  6. linux服务器NAT后无法在内网通过外部IP访问内部服务的问题

    场景一: 将外网访问192.168.100.10的80端口转发到192.168.75.5:8000端口. # iptables -t nat -A PREROUTING -d 192.168.100. ...

  7. thinkphp5.0 中简单处理微信支付异步通知

    public function wx_notify(){ $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; libxml_disable_ent ...

  8. docker nginx 命令。

    docker run -d -p 80:80 -p 443:443 --name baiqian.site --restart=always -v ~/wwwroot/layx:/usr/share/ ...

  9. cookie session jwt-token

    http是无状态的,即请求之间是相互独立的:即提供用户名/密码验证后,下次还需要再次提供 而cookie就是解决这个问题的 cookies 服务器验证通过后,在响应头中设置set-cookies,浏览 ...

  10. CPU 的由来

    由 c# 的CEF 框架提供的 js 扩展,WebBrowser. JavascriptObjectRepository. 问:为什么要提供这一种方式. 提供了一种 能让js 与后端代码通讯的 方式. ...