反射、HashMap、ArrayList与LinkedList区别

1,反射机制答:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
2,HashMap的底层实现1),HashMap是继承自Map接口与AbstractMap抽象类,按照键值对的方式进行存储数据,无序,存储的key值是唯一的,但是value值可以重复,key与value可以为null,但是key只能有一个为null,值可以多个为null2),HashMap的底层实现在jdk1.8之后是数组+单链表+红黑树,在链表的长度大于等于8并且数组的长度大于等于64的时候会将链表转化成红黑树,在红黑树的节点数小于等于6的时候会将红黑树转化成链表,存储键值对的其实是一个node节点,数组是node数组,发生hash冲突是采用的是拉链法。3),HashMap在jdk1.7之前的底层是数组+链表,每次发生hash冲突,进行拉链法采取的是头插法(这样会导致扩容的时候元素的指向与扩容之前有所不同,可能会造成环,从而使得程序陷入死循环),jdk1.8之后采用的是尾插法。4),HashMap的初始值是16,阈值是0.75,扩容的倍数为2倍。如果初始化的时候调用的是无参构造器,那么HashMap会在第一次put元素的时候进行第一次扩容,也就是默认的长度16。如果初始化的时候我们传入了自定义的数组长度,那么HashMap会选取大于或等于传入值的2的倍数的值。扩容时对所有的元素进行重新计算在数组中的存储位置。5),HashMap中的对于key值存储的位置采取了重新hash的方法,即(h=key.hashCode())^(h>>>16);
3,ArrayList与LinkedList的区别1),ArrayList的底层时动态数组;LinkedList的底层时双向链表2),根据底层的不同,可知,ArrayList中所有的元素存储的地址都是一串连续的地址空间;而LinkedList则是无序,随机的地址空间3),ArrayList由于有索引的存在,而LinkedList是节点之间的指向,在查找的时候必须依次遍历查找,所以ArrayList的查找与修改效率高于LinkedList4),LinkedList由于在删除与添加元素的时候只需要改变节点之间的指向,而ArrayList删除与添加元素的时候需要移动添加位置之后的所有元素,所以它的删除与添加的效率高于ArrayList。5),但是也不是绝对的,比如ArrayList删除(或添加)最后一个元素的效率与LinkedList查找(或修改)第一个元素与最后一个元素的效率都是高的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue非编译的模块化写法

项目目录 ●/ ●index.html ●js/ ●main.js ●myComponent.js ●routes.js ●textComponent.js ●lib/ ●vue.js ●vue-router.js ●require.min.js 一、构建require.js环境 (1&#x…

3-8 基于SpringBoot连接数据库与配置MyBatis实操 创建表sql

11 13-8 基于SpringBoot连接数据库与配置MyBatis实操 springSecurity提供了 现成的基于内存管理的类 shiro则必须自己设计这样的类 需要自己设计用户权限这样的体系 这里基于RBAC简单的设计一套 -- 权限表 -- CREATE TABLE permission (pi…

struts基本概念(1)

model1:1,纯jsp2.jspjavabeanmodel2:MVC: jspservletjavabean m:model (模型)封装数据,业务处理类 ,返回处理结果v:view(视图)展示数据c:cotroller(控制器)处理请求,模型和视图之间进行转换DTD…

使用 RxJS 实现 JavaScript 的 Reactive 编程

简介 作为有经验的JavaScript开发者,我们会在代码中采用一定程度的异步代码。我们不断地处理用户的输入请求,也从远程获取数据,或者同时运行耗时的计算任务,所有这些都不能让浏览器崩溃。可以说,这些都不是琐碎的任务&…

vue组件自定义v-model

转载自 vue组件&#xff0c;自定义v-model方法1<my-component v-model"obj"></my-component>在使用my-component组件时&#xff0c;为了实现双向绑定。1234567891011121314Vue.component(my-component, {props: {obj: Object,},model: {prop: obj,event…

权限管理系统

11 已经有现成的spring Security 和 Apache shiro 为什么还要开发自己的一套权限管理系统 1.必须按照框架的要求进行配置&#xff0c;会被框架限制&#xff0c;差一点点就转不起来&#xff0c;犯一点点错误都不行&#xff0c; 2.没有界面操作&#xff0c;和查看&#xf…

vue watch监听对象

一、watch的API vm.$watch( expOrFn, callback, [options] ) 参数&#xff1a; {string | Function} expOrFn{Function | Object} callback{Object} [options] {boolean} deep{boolean} immediate 返回值&#xff1a;{Function} unwatch 用法&#xff1a; 观察 Vue 实例变化的…

从.NET和Java之争谈IT这个行业

一、有些事情难以回头 开篇我得表名自己的立场:.NET JAVA同时使用者,但更加偏爱.NET.原因很简单 1.NET语言更具开放性,从开源协议和规范可以看出; 2.语言更具优势严谨; 3.开发工具VS更具生产力; 然而 1.Java,C#的职位比率在4:1,虽然这不是什么问题,因为求职竞争的比例更大(JAVA…

权限管理系统2_权限表,权限模块表

CREATE TABLE sys_acl_module ( id int(11) NOT NULL AUTO_INCREMENT COMMENT 权限模块id, name varchar(20) NOT NULL DEFAULT COMMENT 权限模块名称, parent_id int(11) NOT NULL DEFAULT 0 COMMENT 上级权限模块id, level varchar(200) NOT NULL DEFAULT COMMENT …

struts基本概念(2)

一、struts使用步骤&#xff1a;1.导包&#xff08;基本&#xff09;2.web.xml配置struts控制器 C3.页面开发 V4.处理类开发 M()5.配置struts.xml 6.部署运行二、struts访问session(servlet )1.解耦方式:ActionContext Map 2.耦合方式:ServletActionContextHttpSession 三…

vue2.0 $router和$route的区别

转载自 vue2.0 $router和$route的区别在vue2.0里页面参数是 this.$route.query或者 this.$route.params 接收router-link传的参数。 在路由跳转的时候除了用router-link标签以外需要在script标签在事件里面跳转&#xff0c;所以有个方法就是在script标签里面写this.$router.pu…

基于Bootstrap 3.x的免费高级管理控制面板主题:AdminLTE

AdminLTE 是一个基于Bootstrap 3.x的免费高级管理控制面板主题。AdminLTE - 是一个完全响应式管理模板。基于Bootstrap3框架。高度可定制的&#xff0c;易于使用。适合从小型移动设备到大型台式机很多的屏幕分辨率。 在线预览: http://almsaeedstudio.com/preview/ AdminLTE 在…

Spring MVC开发环境搭建

现在springMVC是非常常用的框架&#xff0c;很多公司的内部都是使用这个框架 打开maven查询jar包的网址 mvnrepository.com 测试是否成功 war:只是运行 war expord: 运行且调试

Redola.Rpc 的一个小目标:20000 tps

Redola.Rpc 的一个小目标 Redola.Rpc 的一个小目标&#xff1a;20000 tps。 Concurrency level: 8 threadsComplete requests: 20000 Time taken for tests: 0.886 secondsTime per request: 0.044 ms (avg)Requests per second: 22573 [#/sec] (avg) Concurrency level: 8 thr…

vue 动态修改路由参数

转载自 vue 动态修改路由参数 import merge from webpack-merge&#xff1b;修改原有参数 this.$router.push({query:merge(this.$route.query,{maxPrice:630}) })新增一个参数&#xff1a; this.$router.push({query:merge(this.$route.query,{addParams:我是新增的一…

2016年寒假心得

对于上学的孩子来说每年都有寒假&#xff0c;可是一样的寒假总是不一样的玩法。自从高中毕业之后&#xff0c;很少动笔写文了&#xff0c;这次就好好的写一下吧&#xff01;咱的文笔也不是很好&#xff0c;就写个最简单的流水状大家凑合的看看吧&#xff01;&#xff01;&#…

Vue.js 定义组件模板的七种方式

转载自 Vue.js 定义组件模板的七种方式在 Vue 中定义一个组件模板&#xff0c;至少有七种不同的方式&#xff08;或许还有其它我不知道的方式&#xff09;&#xff1a; 字符串模板字面量x-template内联模板render 函数JSF单文件组件 在这篇文章中&#xff0c;我将通过示例介绍…

.Net Core上用于代替System.Drawing的类库

目前.Net Core上没有System.Drawing这个类库&#xff0c;想要在.Net Core上处理图片得另辟蹊径。 微软给出了将来取代System.Drawing的方案&#xff0c;偏向于使用一个单独的服务端进行各种图片处理https://github.com/dotnet/corefx/issues/2020https://github.com/imazen/Gra…

16-1 Redis分布式缓存引入与保存缓存功能实现

16-1 Redis分布式缓存引入与保存缓存功能实现 现在功能已经完成了&#xff0c;但是我们还是要考虑一下性能问题&#xff0c;现在任何请求都是要到数据库中查询很多的数据&#xff0c;才能知道当前的用户是否有权限可以访问当前的url&#xff0c;当我们的请求量很大时&#xff…