java集合浅谈(一)】的更多相关文章

一.类库结构图概览 容器对象仅能持有对象引用(对象的指针),而不是Copy对象信息,从网上搜得几张Java中集合类库的结构图,如下所示: 二.解说Collection 2.1 Collection (1)Collection是最基本的集合接口,由Collection接口派生的两个接口是List和Set.JDK提供的类都继承自Collection的“子接口”,如List和Set. (2)所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数和有一个Collection参…
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元.  -----------------------------------------------------------------------------------…
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10703558.html,否则将追究法律责任!!! Set(基于Map来实现的,不细说) HashSet(不重复.无序.非线程安全的集合) 底层实现,源码如下: public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { st…
当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 分这几种情况:    1.其他方法前是否加了synchronized关键字,如果没加,则能.    2.如果这个方法内部调用了wait,则可以进入其他synchronized方法.    3.如果其他个方法都加了synchronized关键字,并且内部没有调用wait,则不能.    4.如果其他方法是static,它用的同步锁是当前类的字节码,与非静态的方法不能同步,因为非静态的方法用的是this…
原则:最好在任何时候使用InputStream或者OutputStream的时候,在finally中调用close()方法,显式关闭. 一个典型的示例 InputStream in = null; try { in = acquireStream(); ... } finally { if (in != null) in.close(); } fianlly中的if (in != null) in.close();也可以用IOUtils.closeQuietly(in);代替,需要Apache…
一.什么是内部类? 到底什么是内部类呢?通俗的讲,就是在类内部定义的类,包括定义在一个类的方法外面.方法里面或者代码块中. 二.为什么要使用内部类? 为什么我们要不走寻常路,把一个类定义在另一个类的内部呢?这样到底是出于什么目的呢?其实内部类是为了弥补java的单继承的特点,以实现多继承.内部类可以继承抽象类或实现接口.这样外部类也继承一个父类,就变相的实现了多继承.内部类可以访问外部类的属性,包括私有属性. 三.成员内部类 先上代码: package noStaticInnerClass; p…
一.什么情况下使用枚举类? 有的时候一个类的对象是有限且固定的,这种情况下我们使用枚举类就比较方便? 二.为什么不用静态常量来替代枚举类呢? public static final int SEASON_SPRING = 1; public static final int SEASON_SUMMER = 2; public static final int SEASON_FALL = 3; public static final int SEASON_WINTER = 4; 枚举类更加直观,类…
java提供异常处理机制中,可以分为RuntimeException和checked Exception两种. RuntimeException 是运行时异常,是程序本身无法解决的.例如,对于一个用户注册网站,如果当前用户名已经被使用,则解决方案只能是当前用户使用新的用户名, 而程序本身是无法解决的(我们总不能通过程序将原有用户名删除,不给他使用,然后给当前用户注册吧...). 也可以说,是由调用者决定的. 企业开发中,一般自定义(给用户反馈信息)的异常偏向于使用RuntimeException…
最近刚看了http协议,想写点东西加深一下理解,如果哪儿写错了,请指正. 1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本.其中最著名的就是RFC 2616.RFC 2616定义了今天…
首先大家进来第一个疑问肯定是"什么是序列化?为什么要使用序列化?怎么实现一个简单的序列化案例?" 1.序列化就是把对象以一种规范的二进制形式存在内存中,另一边以反序列化方式获取: 2那么为什么要使用序列化呢?不使用序列化的话,就没有一个规范,你就算存储了数据,别人也不知道以哪种规范去获取:所以序列化就是一种大家都认同的规范了: 3.接下来我们实现一个简单的序列化案例,只要会写"Hello World!!!"的人都可以实现这个案例!!! 1.首先建一个普通的java项…
1.Service Manager的Java代理对象 在Java层中,Service Manager的代理对象类型为ServiceManagerProxy.它继承并且实现了IServiceManager接口,其中四个成员函数和一个变量如下: getService.checkService:获取Java服务代理对象 addService:注册Java服务 listService:获取已经注册的java服务表mRemote:类型为Ibinder,指向了一个BinderProxy对象.这个对象用来描述…
在Java开发中,注解可谓是帮了大忙.注解的使用帮助我们简化了代码,让代码更加简洁.今天就来谈谈常用的Lombok注解. lombok注解文档 lombok官方下载地址 先看一下lombok支持的一些常见的注解: @NonNull @Getter/@Setter @Cleanup @ToString @EqualsAndHashCode @EqualsAndHashCode @NoArgsConstructor @AllArgsConstructor @NonNull NonNull注解可以用在…
注意 本文的代码,为了学习方便,简化代码复杂度,未考虑拆包.粘包等情况的处理.所以仅供学习使用,不能用于实际环境. 阻塞IO,BIO Java1.1发布的IO是BIO.阻塞地连接之后,通过流进行同步阻塞地通讯. 同步阻塞连接 因同步阻塞地监听连接,如果服务端只有单线程进程处理,每个请求必须等待前一请求处理完毕才开始处理新请求. 所以,一般情况下,服务端每接收一个请求,可交派给一个线程处理这个请求,这样,在处理环节实现异步.其逻辑图如下: 阻塞通讯 客户端与服务端之间的通讯是通过流进行传输的,而流…
在java中switch后的表达式的类型只能为以下几种:byte.short.char.int(在Java1.6中是这样),java1.7后支持了对string的判断 switch 的括号一定是表达式, case后一定是表达式的值.   注意的是:switch 结束条件一个是遇到break或者遇到“}”.在java中如果switch的case语句中少写了break;这个关键字,在编译的时候并没有报错;    但是在执行的时候会一直执行所有case条件下的语句并不是去判断,所以会一直执行直到遇到b…
对象的串行化(Serialization) 一.串行化的概念和目的 1.什么是串行化 对象的寿命通常随着生成该对象的程序的终止而终止.有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复.我们把对象的这种能记录自己的状态以便将来再生的能力.叫作对象的持续性(persistence).对象通过写出描述自己状态的数值来记录自己 ,这个过程叫对象的串行化(Serialization) .串行化的主要任务是写出对象实例变量的数值.如果交量是另一对象的引用,则引用的对象也要串行化.这个过程是递归的,…
1.java的设计模式可以分为3类: 创建型模式(5种):工厂模式,抽象工厂模式,建造者模式,单例模式,原型模式: 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式和享元模式: 行为型模式(11种):策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式: 2.设计模式遵循的原则有6个: 开闭原则(Open Close Principle): 对扩展开放,对修改关闭: 里氏替换原则(Lisk…
首先比较下RPC和RMI的差别: 首先java提供了RMI的api,jdk1.5之后虚拟机自动生成两个类:存根类stub和骨架类skelton. stub是给客户端的,当客户端调用远程对象的一个方法时,实际上是调用本地存根对象的相应方法.skelton负责在服务端为远程对象接受客户端的请求.RMI必须要有JVM支持,所以,如果C,S都使用java开发,可以考虑使用RMI. RPC可以跨语言,客户端请求参数中就带有需要调用的类,方法及参数 -----------------------------…
一.定义 在运行过程中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:还可以通过反射创建对象,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 二.能做什么 1.在运行时判断任意一个对象所属的类 2.在运行时构造任意一个类的对象 3.在运行时判断任意一个类所具有的成员变量和方法 4.运行时调用任意一个对象的方法 5.生成动态代理 三.原理,通过例子说明 public class Test { public stat…
/** * String s1 = "a"; * 编译器会先检查常量池中是否已经有"a": * 如果没有,则在常量池先创建,后引用. * 如果有,则直接引用; * 所以执行该语句,会产生0个或1个对象. * 这里,会创建1个对象. */ String s1 = "a"; /** * String s2 = new String("a"); * 编译器先在堆中创建一个对象,然后去常量池中检查是否已有"a":…
什么是OCR? 粗暴点说就是图片文本识别!正规点的说法就是:(Optical Character Recognition,光学电子识别) 最近公司开展新项目,考虑到实名认证这方面,然后还要上传身份证正反面,这就会涉及到一个问题,就是填写的身份证号,跟图片的身份证号对不上,或者我的图片是瞎上传的那种,那应该怎么办? 那只能使用图片文本识别就是所谓的OCR! 有很多种方法可以实现,比如人民币玩家的可以接第三方:聚合.阿里.腾讯.......等等众多平台都有相关的方案, 平民玩家的,也有插件:tess…
通过最近的学习,学到了一些的Math类中的常见方法 package org.stm.demo; public class Test { public static void main(String[] args) { /** * Math.abs(绝对值) */ System.out.println(Math.abs(-11.8)); //11.8 System.out.println(Math.abs(-0.0)); //0.0 /** * Math.ceil(天花板) */ System.o…
HashMap是常用的集合类,以Key-Value形式存储值.下面一起从代码层面理解它的实现. 构造方法 它有好几个构造方法,但几乎都是调此构造方法: public HashMap(int initialCapacity, float loadFactor) { // 初始容量,过载因子 if (initialCapacity < 0) // 初始容量<0的异常判断 throw new IllegalArgumentException("Illegal initial capacit…
for语法: for(初始化条件; 判断条件(bool型,不可缺省); 条件改变)// 初始化条件,条件改变可以是多条,eg for(x=1,y=1;x<4;x++,y++) { 执行的操作 } for和while联系和区别:class WhileDemo { public static void main(String [] args) { int x=1; while(x<4) { System.out.println("ok while"); x++; } } } c…
while语法格式:while(布尔表达式){//语句}先判断布尔表达式,如果为true就会执行循环体中的语句,然后再判断布尔表达式,一直到布尔表达式为false,然后循环结束.通常用算术运算符(++ -- 累减) class WhileDemo { public static void main(String [] args) { int x=1; while(x<4) { System.out.println("ok"); x++; } } } do-while语法格式:do…
概述 HashMap是通过数组+链表的方式实现的,由于HashMap的链表也是采用数组方式,我就修改直接利用LinkedList实现,简单模拟一下. 1.Key.Value的存取方式. 2.HashMap与HashTable的区别 HashMap线程不安全.K.V可以为空,效率较高,没有contains方法. HashTable线程安全,K.V不能为空,效率较低. 3.简述hash的实现原理 模拟实现 1.综述实现原理 (1)建立一个数组用于存储链表的引用,然后链表里面存储的内容为Entry(包…
说得挺细的,不是泛泛而谈.https://blog.csdn.net/weixin_42762133/article/details/82890555…
注解定义(来自百度百科):指示编译器如何对待您的自定义 Annotation,预设上编译器会将Annotation资讯留在class档案中,但不被虚拟机器读取,而仅用于编译器或工具程式运行时提供资讯. 随着零配置的流行,注解的使用也越来越大众化,注解的学习也很有必要.最近学习了下Spring的几个注解,这里与大家分享下自己对注解的理解.首先我们来看下@Controller这个注解的源码: ? 1 2 3 4 5 6 7 8 9 10 package org.springframework.ste…
浅谈JAVA集合框架 Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection classes).集合在java中非常重要,在讨论之前,先来看几个面试中的经典问题. 1 Collection 和 Collections的区别. 2 List, Set, Map是否继承自Collection接口. 3 ArrayList和Vector的区别. 4 HashMap和Hashtable的…
浅谈Java的集合框架 一.    初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Queue 关注事物被处理时的顺序,Map 关注事物的映射和键值的唯一性.其中前三类直接继承于Collection接口,Map单独为接口,他们的继承实现关系如下图所示. 二.    Collection接口 Collection接口是 Set .List 和 Queue 接口的父接口,提供了多数集合常…
Java 集合 集合是对象的容器,定义了多个对象进行操作的常用方法,可实现数组的功能. Java集合类库所处位置:java.util.*. 与现代的数据结构类库的常见做法一样,Java集合类库也将接口与实现分离开. 集合和数组的区别: 1.数组长度固定,集合长度不固定. 2.数组可以存储基本类型和引用类型,集合只能存储引用类型. Java 集合框架中的接口体系 Java集合框架中的重要接口 Java集合框架中,集合有两个基本接口:Collection 和 Map. Collection 接口 C…