java
zuo_er_lyf
这个作者很懒,什么都没留下…
展开
-
Java中的List、Set和Map的各自特征及使用场景
...转载 2020-01-14 14:53:24 · 242 阅读 · 0 评论 -
图解LinkedHashMap原理
1 前言LinkedHashMap继承于HashMap,如果对HashMap原理还不清楚的同学,请先看上一篇:图解HashMap原理2 LinkedHashMap使用与实现先来一张LinkedHashMap的结构图,不要虚,看完文章再来看这个图,就秒懂了,先混个面熟:LinkedHashMap结构.png2.1 应用场景HashMap是无序的,当我们希望有顺序地去存储k...转载 2019-12-20 17:55:26 · 376 阅读 · 0 评论 -
HashMap源码解析
前言今天来介绍下HashMap,之前的List,讲了ArrayList、LinkedList,就前两者而言,反映的是两种思想:ArrayList以数组形式实现,顺序插入、查找快,插入、删除较慢LinkedList以链表形式实现,顺序插入、查找较慢,插入、删除方便那么是否有一种数据结构能够结合上面两种的优点呢?有,答案就是HashMap。它是基于哈希表的 Map 接口的实现,以key-v...转载 2019-12-20 16:56:05 · 119 阅读 · 0 评论 -
hashcode是什么?
一、hashcode是什么?1、hash和hash表是什么? 想要知道这个hashcode,首先得知道hash,通过百度百科看一下:hash是一个函数,该函数中的实现就是一种算法,就是通过一系列的算法来得到一个hash值。这个时候,我们就需要知道另一个东西,hash表,通过hash算法得到的has...转载 2019-12-20 16:15:15 · 482 阅读 · 0 评论 -
HashMap和Hashtable的区别
HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。1. HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。...原创 2019-12-20 15:19:51 · 218 阅读 · 0 评论 -
HashSet与TreeSet 区别
HashSetHashSet有以下特点不能保证元素的排列顺序使用Hash算法来存储集合中的元素,有良好的存取和查找性能非同步,多线程并发要注意线程同问题集合元素值可为null通过equal()判断两个元素是否相等,并两个元素的hashCode()返回值也相等当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然...原创 2019-12-20 14:49:36 · 453 阅读 · 0 评论 -
Arraylist与Vector的区别
这几天工作有点忙,有很多代码需要写,更新文章有点慢,说声抱歉,前几天有人反馈LinkedList的文章不太看得懂,临时准备补两篇文章。前几篇文章我们重点说了ArrayLIst,是时候放出这张图了。这张图里的内容对我们学习Java来说,非常的重要,白色的部分是需要去了解的,黄色部分是我们要去重点了解的,不但要知道怎么去用,至少还需要读一次源码。绿色部分内容已经很少用了,但在面试题中有可能会问到,我们...转载 2019-12-20 11:57:26 · 115 阅读 · 0 评论 -
Arraylist和linkedlist的区别
PS:推荐大家先去了解一下链表这个数据结构。ArrayList和LinkedList可以说是日常业务开发中最常使用的容器类了,同时,他们的区别也是面试高发区,虽然很简单,但是我们总是不能说的完整,今天就通过对他们源码的阅读来进一步加深理解。首先,看他们类的定义可以发现: 他们都是实现了List接口,这个接口干了什么呢?这个接口定义了对列表的一些基本操作,如add,contains,indexof,...转载 2019-12-20 11:45:52 · 155 阅读 · 0 评论 -
HashSet源码解析
前言今天来介绍下HashSet。前面,我们已经系统的对List和Map进行了学习。接下来,我们开始可以学习Set。相信经过Map的了解之后,学习Set会容易很多。毕竟,Set的实现类都是基于Map来实现的(HashSet是通过HashMap实现的)。构造图如下:蓝色线条:继承绿色线条:接口实现正文对于HashSet而言,它是基于HashMap来实现的,底层采用HashM...转载 2019-12-19 17:38:25 · 147 阅读 · 0 评论 -
LinkedList源码解析
前言今天来介绍下LinkedList,在集合框架整体框架一章中,我们介绍了List接口,LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口链表的实现。基于链表实现的方式使得LinkedList在插入和删除时更优于ArrayList,而随机访问则比ArrayList逊色些。构造图如下:蓝色线...转载 2019-12-19 16:17:13 · 109 阅读 · 0 评论 -
ArrayList源码解析
前言今天来介绍下ArrayList,在集合框架整体框架一章中,我们介绍了List接口,ArrayList继承了AbstractList,实现了List。ArrayList在工作中经常用到,所以要弄懂这个类是极其重要的。构造图如下:蓝色线条:继承绿色线条:接口实现正文ArrayList简介ArrayList定义 public class ArrayList<E&...转载 2019-12-19 11:14:58 · 119 阅读 · 0 评论 -
Object类有哪些公用方法?
Object是所有类的父类,任何类都默认继承Object。clone保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常equals在Object中与==是一样的,子类一般需要重写该方法hashCode该方法用于哈希查找,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈...原创 2019-12-13 11:38:59 · 241 阅读 · 0 评论 -
为什么局部内部类的成员被final修饰才能被局部内部类的方法访问?
局部变量会在方法调用完毕后立刻消失,而内部类对象的生命周期和其他对象的生命周期一样:当没有引用指向内存地址时,通过垃圾回收机制回收,所以如果局部局部内部类的成员不用final修饰的话,很可能出现方法已经已经调用完毕,内部类还没有被垃圾回收机制收回,定义为final后,编译器会把匿名内部类对象要访问的所有final类型局部变量,都拷贝一份作为该对象的成员变量。这样,即使栈中局部变量已经死亡,匿名内部...原创 2019-12-13 11:12:25 · 441 阅读 · 0 评论 -
简述java抽象类与接口的异同点
一、抽象类: (关键字abstract)java抽象类定义在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也...原创 2019-12-13 10:45:01 · 1562 阅读 · 0 评论 -
JAVA重写和重载的区别
1.Java 重载与重写是什么?有什么区别? 重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重载函数的区分标准)同时存在于同一个类中,是一个类中多态性的一种表现(调用方法时通过传递不同参数个数和参数类型来决定具体使用哪个方法的多态性)。 重写(Override)是父类与子类之间的...原创 2019-12-13 10:24:23 · 126 阅读 · 0 评论 -
final,finally,finalize的区别
一.简单区别:final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,供垃圾收集时的其他资源回收,例如关闭文件等。二.中等区别:1. final:java中的关键字,修饰符。A).如果一个类被声明为final,...转载 2019-12-11 11:58:11 · 133 阅读 · 0 评论 -
什么是内部类?有什么作用?静态内部类和非静态内部类的区别?
一、 定义放在一个类的内部的类我们就叫内部类。二、 作用1.内部类可以很好的实现隐藏一般的非内部类,是不允许有 private 与protected权限的,但内部类可以;平时我们对类的访问权限,都是通过类前面的访问修饰符来限制的,一般的非内部类,是不允许有 private 与protected权限的,但内部类可以,所以我们能通过内部类来隐藏我们的信息2.内部类拥有外围类的所有元素的访问...原创 2019-12-11 11:00:32 · 1464 阅读 · 0 评论 -
Java基础之泛型&反射
a.泛型含义:是JDK1.5的新特性,本质是参数化类型,即所操作的数据类型被指定为一个参数,使用时通过传参来指定具体的类型。好处:安全简单。具体体现在提供编译时的强类型检查,而不用等到运行;可避免类类型强制转换;增强代码可读性。//不使用泛型需要强制转换List list = new ArrayList();list.add("hello");String s = (String) l...转载 2019-12-10 11:54:19 · 113 阅读 · 0 评论 -
try-catch和throw,throws的区别
java里的异常多种多样,这是一种非常有用的机制,它能帮助我们处理那些我们未知的错误,在java里,关于异常的有throw throws,还有一个try catch 程序块。接下来我们挨个看看这几个的作用。1.throwthrow 就是抛出一个异常,并获取这个异常的引用,这个异常会被抛到外部的环境,由外部环境进行处理class A{public void func() throws Exc...原创 2019-12-09 11:49:24 · 967 阅读 · 0 评论 -
java程序错误类型及异常处理
一、程序的错误类型在程序设计中,无论规模是大是小,错误总是难免的。程序的设计很少有能够一次完成,没有错误的(不是指HelloWorld这样的程序,而是要实现一定的功能,具备一定实用价值的程序),在编程的过程中由于种种原因,总会出现这样或那样的错误,这些程序的错误就是我们常说的“Bug”,而检测并修正这些错误的方法就是“Debug”(调试)。 基本上所...转载 2019-12-09 11:39:20 · 1589 阅读 · 0 评论 -
深入剖析Java中的装箱和拆箱
一.什么是装箱?什么是拆箱?二.装箱和拆箱是如何实现的三.面试中相关的问题一.什么是装箱?什么是拆箱?我们知道 Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料。在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:Integer i = new Integer(10...转载 2019-12-03 18:23:36 · 124 阅读 · 0 评论 -
Java堆、栈、内存分析
在 JAVA 中,有六个不同的地方可以存储数据:1. 寄存器( register )。这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。2. 栈( stack )。位于通用 RAM 中,但通过它的“栈指针”可以从处理器获得支持。堆栈指针若向下移动,则分配新的内...原创 2019-12-02 18:28:28 · 132 阅读 · 1 评论 -
面向对象 四大特性
面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的...原创 2019-12-02 17:37:00 · 214 阅读 · 0 评论 -
Android 侧滑删除之SwipeDelMenuLayout
前段时间在git上get到SwipeDelMenuLayout侧滑删除,不依赖ListView或者RecyclerView,只要在item中即可,无耦合性。效果图:用法:在build.gradle中配置: dependencies { compile 'com.github.mcxtzhang:SwipeDelMenuLayout:V1.3.0' }布...原创 2018-08-13 14:06:27 · 2122 阅读 · 0 评论 -
Android 反射机制的理解
之前在网上找有关反射机制的资料发现网上关于这块的资料不多,而且不太容易懂,所以试着写一篇我自己所理解的反射机制希望能多你有所帮助.首先来看看用反射机制和用以前的方法新建对象实例有什么不同第一步新建一个Person对象用以前的方法是:Person p = new Person();在内存中新建一个Person的实例,对象p对这块内存地址进行引用用反射机制实...转载 2019-04-29 11:52:15 · 229 阅读 · 0 评论 -
HashMap和ArrayMap对比
HashMap和ArrayMap各自的优势1.查找效率:HashMap因为其根据hashcode的值直接算出index,所以其查找效率是随着数组长度增大而增加的。ArrayMap使用的是二分法查找,所以当数组长度每增加一倍时,就需要多进行一次判断,效率下降。所以对于Map数量比较大的情况下,推荐使用2.扩容数量:HashMap初始值16个长度,每次扩容的时候,直接申请双倍的数组空间。...原创 2019-05-27 10:28:57 · 3237 阅读 · 2 评论 -
HashMap和Hashtable的区别
HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。1.HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。2...转载 2019-05-27 10:43:39 · 120 阅读 · 0 评论 -
java中equals,hashcode和==的区别
1、==java中的数据类型,可分为两类:1.基本数据类型,也称原始数据类型byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。 2.引用类型(类、接口、数组) 当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同...转载 2019-05-23 17:09:46 · 126 阅读 · 0 评论 -
int和Integer的区别
int和Integer的区别1、Integer是int的包装类,int则是java的一种基本数据类型2、Integer变量必须实例化后才能使用,而int变量不需要3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值4、Integer的默认值是null,int的默认值是0延伸:关于Integer和int的比较1、由...转载 2019-05-23 17:56:40 · 87 阅读 · 0 评论 -
图析:String,StringBuffer与StringBuilder的区别
一、Java String 类——String字符串常量字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。需要注意的是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。我们来看一下这张对String操作时内存变...转载 2019-05-23 18:15:01 · 114 阅读 · 0 评论 -
进程和线程的区别
进程进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。线程线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由...原创 2019-05-24 10:54:07 · 93 阅读 · 0 评论 -
final、finally与finalize的区别
final、finally与finalize的区别 1. final 在java中,final可以用来修饰类,方法和变量(成员变量或局部变量)。下面将对其详细介绍。1.1 修饰类 当用final修饰类的时,表明该类不能被其他类所继承。当我们需要让一个类永远不被继承,此时就可以用final修饰,但要注意:final类中所有的成员方法都...转载 2019-05-24 11:25:06 · 198 阅读 · 0 评论 -
request.sendRedirect(重定向)和request.getRequestDispatcher(请求转发)
JSP中response.sendRedirect()与request.getRequestDispatcher().forward(request,response)这两个对象都可以使页面跳转。1.response.sendRedirect(url)—–重定向到指定URL ,前后页面不是一个request request.getRequestDispatcher() ——-是请求转发,前后转载 2018-03-20 15:40:56 · 1328 阅读 · 0 评论