当前位置: 首页 > news >正文

网站建设90g 吾爱破解艺考培训学校

网站建设90g 吾爱破解,艺考培训学校,怎么在电商平台推广告,重庆最新新闻事件今天说说你如何选用集合? 需要键值对选用 map 接口下的集合,需要排序用 TreeMap, 不需要排序用 HashMap 不需要键值对仅存放元素则选择 Collection 下实现的接口,保证元素唯一使用 Set, 不需要则选用 List Collection 和 Collections 有什么区别…

说说你如何选用集合?

需要键值对选用 map 接口下的集合,需要排序用 TreeMap, 不需要排序用 HashMap
不需要键值对仅存放元素则选择 Collection 下实现的接口,保证元素唯一使用 Set, 不需要则选用 List

Collection 和 Collections 有什么区别?

  • Collection 是集合类的上级接口,继承它的主要有 List 和 Set;
  • Collections 是针对集合类的一个工具类,它提供了一些列的静态方法实现,如 Collections.sort() 排序、Collections.reverse() 逆序等。

Map 集合

HashMap,Hashtable,LinkedHashMap, TreeMap

HashMap:

  • Hashmap 是一个最常用的 Map, 它根据键的 HashCode 值存储数据, 根据键可以直接获取它
    的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的
  • HashMap 最多只允许一条记录的键为 Null; 允许多条记录的值为 Null;
  • HashMap 不支持线程的同步,即任一时刻可以 有多个线程同时写 HashMap; 可能会导致数据的不一致。如果需要同步,可以用Collections 的 synchronizedMap 方法使 HashMap 具有同步的能力,或者使用ConcurrentHashMap

Hashtable:
Hashtable 与 HashMap 类似, 它继承自 Dictionary 类,不同的是: 它不允许记录的键或者值为
空; 它支持线程的同步,即任一时刻只有一个线程能写 Hashtable, 因为 Hashtable 内部的方法基本
都经过 synchronized 修饰,因此也导致了 Hashtable 在写入时会比较慢。

LinkedHashMap:
LinkedHashMap 是 HashMap 的一个子类,额外持有一个双向链表,维保存了记录的插入顺
序,在用 Iterator 遍历 LinkedHashMap 时,先得到的记录肯定是先插入的. 也可以在构造时用带
参数,按照应用次数排序。在遍历的时候会比 HashMap 慢,不过有种情况例外,当 HashMap 容
量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap 慢,因为 LinkedHashMap 的遍历
速度只和实际数据有关,和容量无关,而 HashMap 的遍历速度和他的容量有关。

TreeMap
TreeMap 实现 SortMap 接口,能够把它保存的记录根据键排序, 默认是按键值的升序排序,也
可以指定排序的比较器,当用 Iterator 遍历 TreeMap 时,得到的记录是排过序的。

HashMap 的链表转换红黑树的机制?

当链表长度大于阈值(默认为 8)会将链表转换成红黑树,以减少搜索时间,但是将链表转换成
红黑树前会判断如果当前数组小于 64 那么会先进行数组扩容而不是转换为红黑树。注:链表(寻
址时间复杂度为 O(N))转换为红黑树(寻址时间复杂度为 O(log(N)))

ConcurrentHashMap 和 Hashtable 的区别??

结构不同:JDK1.7 的 ConcurrentHashMap 底层采用分段的数组(Segment 大数组 +HashEntry
小数组)+ 链表实现,JDK1.8 采用的数据结构,Node 数组 + 链表/红黑二叉树。Hashtable 和
JDK1.8 之前的 HashMap 的底层数据结构类似都是采用数组 + 链表的形式

实现线程安全的方式不同:Hashtable 实现并发安全是通过 synchronized 关键字 ConcurrentHashMap 通过 cas,node,synchronized 相结合的方式实现 (更详细的说是 1.7 使用 segment 分段
锁,segment 实现了 ReentrantLock,在 1.8 取消了分段锁,采用 CAS 和 sychronized 来保证线程安全)

性能不同:Hashtbale 每一次修改都需要锁住整个对象,其他线程在此期间不能操作,所以线
程数量增加的时候性能会急剧下降而 ConcurrentHashMap 仅会对一部分上锁而不是全部都上锁,
因此在并发效率上,ConcurrentHashMap 比 Hashtable 提高了很多

List 集合

Vector 和 ArrayList 初始化大小和容量扩充有什么区别

Vector 和 ArrayList 的默认容量都为 10
Vector 容量扩充默认增加 1 倍
ArrayList 容量扩充默认增加大概 0.5 倍

比较 Arraylist 与 LinkedList ,Vector

底层数据结构:Arraylist 底层使用的是 Object 数组;LinkedList 底层使用的是双向链表
(JDK1.6 之前为循环链表,JDK1.7 取消了循环),Vector 是 List 的古老实现类,底层用 Object[] 存储
线程安全:Vector 底层很多方法都加上了同步关键字 synchronized 保证线程安全,而
ArrayList 和 LinkedList 无法保证线程安全。
是否支持快速随机访问:Vector 和 ArrayList 的内部结构是以数组形式存储的,因此非常适
合随机访问,但非尾部的删除或新增性能较差,比如我们在中间插入一个元素,就需要把后续的
所有元素都进行移动。LinkedList 插入和删除元素效率比较高,但随机访问性能会比以上两个动
态数组慢。。

Set 集合

LinkedHashSet 如何保证有序和唯一性?

LinkedHashSet 底层数据结构由哈希表和链表组成,链表保证了元素的有序即存储和取出一致,哈
希表保证了元素的唯一性。

比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同

  • HashSet 是 Set 接口的实现类,底层是 HashMap, 是线程不安全的,可以存储 Null 值 (因为 HashSet 中只需要用到 key,而 HashMap 是 key-value 键值对,所以向 map 中添加键值对时,键 值对的值固定是PRESENT)
  • LinkHashset 是 HashSet 的子类,LinkedHashSet 是 HashSet 的一个“扩展版本”,会维护“插
    入顺序”,而 HashSet 并不管什么顺序,LinkedHashSet 内部使用 LinkedHashMap 对象来存储和处 理它的元素
  • TreeSet 是基于 TreeMap 实现的 TreeMap 是一个有序的二叉树,那么同理 TreeSet 同样也是 一个有序的
http://www.khdw.cn/news/51686.html

相关文章:

  • asp服装网站源码药品网络营销公司
  • 关于网站设计的会议站内优化
  • wordpress怎么弄垂直分类山东seo
  • nuxt做多页面网站长沙网站seo方法
  • 网站建设需要保存什么seo从零开始到精通200讲解
  • python做网站功能测试免费软文推广平台都有哪些
  • 建设网站的需求分析google关键词搜索工具
  • 福建省人民政府 网站建设搜索网站有哪几个
  • 武威 网站建设seo赚钱项目
  • 中铁建设集团门户网登录网站安卓优化大师历史版本
  • 网站建设7个基查数据的网站有哪些
  • 网站建设服务公司哪家好优化大师下载旧版本安装
  • 网站用什么做内网穿透比较好最新新闻事件今天
  • 信贷网站开发营销软件商城
  • 开发公司补偿物业公司物业费协议seo排名需要多少钱
  • 做3d图的网站有哪些软件快速排名工具免费查询
  • 淮安网站制作上海优化seo排名
  • 网站制作完成后为了sem竞价推广怎么做
  • 滕州哪里有做网站的软文案例
  • 网站建设珠海排名优化
  • 长春做网站公司长春网站排名深圳网站建设公司
  • 竭诚网络网站建设seo竞价
  • 制作静态动漫网站模板关键词点击工具
  • 做公司网站方案seo基础教程使用
  • 网站更换主机南宁 百度网盘
  • 网站颜色搭配网站一键识图找原图
  • 建企业网站用什么源码上海seo排名
  • 国家住房和城乡建设部中国建造师网站微信如何投放广告
  • 网站源码提取旅游景区网络营销案例
  • 海口网站制作微信软文案例