关于JDK中的集合总结(一)】的更多相关文章

1.2版本的JDK才出现的java集合框架. 下面介绍说一下Vector的一些特点. import java.util.Enumeration; import java.util.Iterator; import java.util.Vector; public class VectorDemo { public static void main(String[] args) { Vector v = new Vector(); v.addElement("abc1"); v.addE…
泛型: jdk1.5出现的安全机制. 好处: 1,将运行时期的问题ClassCastException转到了编译时期. 2,避免了强制转换的麻烦. <>:什么时候用?当操作的引用数据类型不确定的时候.就使用<>.将要操作的引用数据类型传入即可. 其实<>就是一个用于接收具体引用数据类型的参数范围. 在程序中,只要用到了带有<>的类或者接口,就要明确传入的具体引用数据类型 . 泛型技术是给编译器使用的技术,用于编译时期.确保了类型的安全. 运行时,会将泛型去掉…
静态方法只能继承,不能重写(Override). StringBufffer,数组,对象 都是容器. 加入数据,“zhangsan” true ,67, 三个数据数据类型不同,不能用数组作为集合,只能用StringBuffer或者是StringBuilder作为集合,但是这两个类型,最终转换成字符串才可以使用. 上面的数据封装成StringBuilder为“zhangsantrue67”. 李四,23,都是(一个对象的)属性值所以用对象来封装,进行存储. 数值有很多的话可以用数组存储,数组有很多…
1.      问题的提出 在 Java 的集合体系当中,无论是 List(列表)还是 Set(集),在设计的时候都存在一个很奇怪的现象:这两种集合的接口,Java 都为其设计了抽象类 AbstractList 和 AbstractMap,这是模板模式的一种典型实现,在抽象模板中,提供了一些这些集合各自的公共行为的实现. 然而,在这两种集合的典型实现类当中,出现了这种继承和实现的结构: ArrayList: LinkedList: Vector: HashSet: TreeSet: 这些实现类都…
一.简介 观察者设计模式有如下四个角色 抽象主题角色:把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者.抽象主题提供一个接口,可以增加和删除观察者角色.一般用一个抽象类或接口来实现,也可以使用非抽象类来实现. 具体主题角色:在具体主题内部状态改变时,给所有登记过的观察者发出通知.具体主题角色通常用一个子类实现. 抽象观察者角色:为所有具体的观察者定义一个接口,在得到主题的通知时更新自己. 具体观察者角色:该角色实现抽象观察者角色所要求的更新接口,以便使本身的状态…
JDK中内置了很多常用的工具类,且多以“s”结尾,如:集合工具类Collections,数组工具类Arrays,对象工具类Objects,文件工具类Files,路径工具类Paths,数学工具类Maths:但也有一些不是以“s”结尾的工具类,如TimeUnit和System. 下面就简单介绍各工具类的用法.(1)Objects中定义很多有用的API,如空指针判断,对象相等比较等.比较常用的API有以下几个: ​ 用于判断两个对象是否相等,两个参数都可以为null ​ public static b…
写的很好,学习道路更轻松一些 原文地址:http://blog.csdn.net/gtuu0123/article/details/6114197 JDK中设计模式 分类: Java相关 设计模式 2011-01-03 20:42 3550人阅读 评论(6) 收藏 举报 jdk设计模式swingclassloaderdocumentationiterator 本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图. 首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计…
JDK中设计模式 本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图.首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计模式有所帮助.一.设计模式是什么(1)反复出现问题的解决方案(2)增强软件的灵活性(3)适应软件不断变化二.学习JDK中设计模式的好处(1)借鉴优秀代码的设计,有助于提高代码设计能力(2)JDK的设计中体现了大多数设计模式,是学习设计模式的较好的方式(3)可以更加深入的了解JDK三.类间关系继承.委托.依赖.聚合.组合​四.介绍方式(1)作用:…
本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图.首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计模式有所帮助. 一.设计模式是什么(1)反复出现问题的解决方案(2)增强软件的灵活性(3)适应软件不断变化 二.学习JDK中设计模式的好处(1)借鉴优秀代码的设计,有助于提高代码设计能力(2)JDK的设计中体现了大多数设计模式,是学习设计模式的较好的方式(3)可以更加深入的了解JDK 三.类间关系继承.委托.依赖.聚合.组合 四.介绍方式(1)作用:归纳某设计模…
java多线程中并发集合和同步集合有哪些? hashmap 是非同步的,故在多线程中是线程不安全的,不过也可以使用 同步类来进行包装: 包装类Collections.synchronizedMap()和Collections.synchronizedList()提供了一个基本的有条件的线程安全的Map和List实现. ConcurrentHashMap和Hashtable之间的区别 那么Hashtable和ConcurrentHashMap之间的区别是什么,可以在多线程环境中使用,但一旦Hash…
1.编写WebService类,使用@WebService注解 package test; import javax.jws.WebService; @WebService public class HelloServiceImpl{ public String say(String name) { return "Hello "+name; } } WebService类 2.使用main方法发布WebService package test; import javax.xml.ws…
红黑树是一种自平衡二叉查找树(binary search tree,BST),红黑树是一种比较复杂的数据结构,红黑树查找.插入.删除元素的时间复杂度为O(log n),n是树中元素的数目.文章的要讲的知识点如下: 一.红黑树的基本介绍 红黑树插入节点 红黑树删除节点 二.红黑树应用实例:Jdk中的TreeMap 一.红黑树的基本介绍 二叉查找树(binary search tree,BST,也称排序二叉树)虽然可以快速检索,但在最坏的情况下:如果插入的节点集本身就是有序的,要么是由小到大排列,要…
前提 紧接着上一篇<通过源码浅析JDK中的资源加载>,ServiceLoader是SPI(Service Provider Interface)中的服务类加载的核心类,也就是,这篇文章先介绍ServiceLoader的使用方式,再分析它的源码. ServiceLoader的使用 这里先列举一个经典的例子,MySQL的Java驱动就是通过ServiceLoader加载的,先引入mysql-connector-java的依赖: <dependency> <groupId>m…
转载自:http://blog.csdn.net/gtuu0123/article/details/6114197 本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图. 首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计模式有所帮助. 一.设计模式是什么 (1)反复出现问题的解决方案 (2)增强软件的灵活性 (3)适应软件不断变化 二.学习JDK中设计模式的好处 (1)借鉴优秀代码的设计,有助于提高代码设计能力 (2)JDK的设计中体现了大多数设计模式,是学习设…
线程中的知识点基本都已经学完了,看看Java5并发库中提供的集合... 一.可堵塞队列 队列包含固定长度的队列和不固定长度的队列 ArrayBlockQueue中只有put()方法和take()方法才具有阻塞功能 1.阻塞队列的功能和效果,代码如下: import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; /** * @className: BlockingQueueTe…
前14篇文章,分享了JDK中值得学习和借鉴的编码和设计方法. 每个硬币都是有两面的.Every coin has two sides. 当然,JDK中也有很多值得改进或者说富有争议的设计. 本篇,就来详细吐槽下JDK中的10个富有争议的设计. 网友指出1.求和抛异常,错误提示不合理. 在OpenJDK源码研究笔记(一)-参数检查&抛出带关键错误提示信息的异常这篇文章中,有个网友指出:"第三个if的提示信息有点问题.前两个if说明了position和size都不可能为负,求和通常不可能为负…
## 前言 随着当今处理器计算能力愈发强大,可用的核心数量越来越多,各个应用对其实现更高吞吐量的需求的不断增长,多线程 API 变得非常流行.在此背景下,Java自JDK1.5 提供了自己的多线程框架,称为 [Executor 框架](https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executor.html). ## 1. Executor 框架是什么? ### 1.1 简介 Java Doc中是这么描述的 > An…
关于集合的体系是每个人都应该烂熟于心的,尤其是对我们经常使用的List,Map的原理更该如此.这里我们看这张图即可: 1.List.Set.Map是否继承自Collection接口? List.Set 是,Map 不是.Map是键值对映射容器,与List和Set有明显的区别,而Set存储的零散的元素且不允许有重复元素(数学中的集合也是如此),List是线性结构的容器,适用于按数值索引访问元素的情形. 2.阐述ArrayList.Vector.LinkedList的存储性能和特性. ArrayLi…
前提 这篇文章主要基于JDK11的源码和最近翻看的<深入理解Java虚拟机-2nd>一书的部分内容,对JDK11中的Reference(引用)做一些总结.值得注意的是,通过笔者对比一下JDK11和JDK8对于java.lang.ref包的相关实现,发现代码变化比较大,因此本文的源码分析可能并不适合于JDK11之外的JDK版本. Reference的简介和分类 在JDK1.2之前,Java中的引用的定义是十分传统的:如果reference类型的数据中存储的数值代表的是另一块内存的起始地址,就称这…
Java中的集合(五)继承Collection的List接口 一.List接口简介 List是有序的Collection的,此接口能够精确的控制每个元素插入的位置.用户能够根据索引(元素在List接口的中位置)访问List中的元素,类似于Java中的数组. List接口有如下特点: 有序的集合.存储顺序和获取元素的顺序都是一致的: 可重复.允许存储重复的元素: 提供索引.提供一些索引的方法,供用户操作. 二.List类图结构 通过上面类图可用看出,List接口下有4个实现类,分别为:Linked…
Java中的集合(四)PriorityQueue常用方法 PriorityQueue的基本概念等都在上一篇已说明,感兴趣的可以点击 Java中的集合(三)继承Collection的Queue接口 查看 这里主要以PriorityQueue的常用方法的学习 一.PriorityQueue的实现 从上图中给层序遍历编号,从中可以发现父子节点总有如下的关系: 通过上述三个公式,可以轻易计算出某个节点的父节点以及子节点的下标.这也就是为什么可以直接用数组来存储堆的原因. PriorityQueue的pe…
目录 1. 前言 2. List 2.1 fail-safe fail-fast知多少 2.1.1 Fail-fast Iterator 2.1.2 Fail-fast 的原理 2.1.3 Fail-safe Iterator 2.2 Iterator to list的三种方法 2.2.1 使用while 2.2.2 使用ForEachRemaining 2.2.3 使用stream 2.3 asList和ArrayList不得不说的故事 2.3.1 创建ArrayList 2.3.2 Unsu…
目录 1. 前言 2. 场景 3. 环境 3.1 开发环境准备 3.2 数据准备 3.2.1 Mysql数据库表及数据 3.2.2 redis库数据 4. 解决方式 5.完整代码 5.1Model 5.2 Controller 5.3 Service 5.4 Service 实现类 6.测试 7.总结 1. 前言  开发过程中,一些集合 的变动会触发任务去改变 其他的集合,为了保障任务的正确执行,应避免出现死循环调用,即对集合之间的影响关系进行一些限制.怕日后遗忘,特在此记录. 2. 场景 A…
前提 Stream是JDK1.8中首次引入的,距今已经过去了接近8年时间(JDK1.8正式版是2013年底发布的).Stream的引入一方面极大地简化了某些开发场景,另一方面也可能降低了编码的可读性(确实有不少人说到Stream会降低代码的可读性,但是在笔者看来,熟练使用之后反而觉得代码的可读性提高了).这篇文章会花巨量篇幅,详细分析Stream的底层实现原理,参考的源码是JDK11的源码,其他版本JDK可能不适用于本文中的源码展示和相关例子. 这篇文章花费了极多时间和精力梳理和编写,希望能够帮…
前提 本文主要内容是分析JDK中的BitMap实现之java.util.BitSet的源码实现,基于JDK11编写,其他版本的JDK不一定合适. 文中的图比特低位实际应该是在右边,但是为了提高阅读体验,笔者把低位改在左边了. 什么是BitMap BitMap,直译为位图,是一种数据结构,代表了有限域中的稠集(Dense Set),每一个元素至少出现一次,没有其他的数据和元素相关联.在索引,数据压缩等方面有广泛应用(来源于维基百科词条).计算机中1 byte = 8 bit,一个比特(bit,称为…
参考资料 该文中的内容来源于 Oracle 的官方文档 Java SE Tools Reference .Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以直接找到这个总入口 Java SE 8 Documentation ,想阅读什么就点什么.本博客不定期从 Oracle 官网搬砖.这里介绍的工具是 keytool . 网络安全概论 在 Web 世界里,安全是一个重之又重的课题,甚至是美国政府都禁止某些加密解密算法的出口. Java 和 Linux 都是…
Java 中的集合接口——List.Set.Map 什么叫集合:集合就是Java API所提供的一系列类的实例,可以用于动态存放多个对象.这跟我们学过的数组差不多,那为什么我们还要学集合,我们看看数组跟集合有什么区别: 数组:长度固定,遍历速度快 可以存储基本类型和引用类型: 集合:长度不固定,只能存储引用类型对象: 从数组跟集合的特点我们很明显的看出,数组有一定的局限性,如果我们需要不定期的往我们的数据中存储数据,数组就满足不了我们的要求. Java集合框架提供了一套性能优良.使用方便的接口和…
深入理解JDK中的I/O 目 录 java内存模型GCHTTP协议事务隔离级并发多线程设计模式清楚redis.memcache并且知道区别mysql分表分库有接口幂等性了解jdk8稍微了解一下特性 jvm内存模型:堆和非堆,http://www.cnblogs.com/RunForLove/p/4775999.html  对这部分的理解,只集中在关乎我们编程的东西部分. 堆就是Java代码可及的内存,是留给开发人员使用的:非堆就是JVM留给自己用的.堆.非堆:虚拟机栈.本地方法栈.程序计数器.方…
Java实现ArrayList和LinkedList的方式采用的是数组和链表.以下是用C++代码的模拟: 声明Collection接口: #ifndef COLLECTION_H_ #define COLLECTION_H_ template<class T> class Collection { public: virtual ~Collection() { } ; ; ; ; ; }; #endif /* COLLECTION_H_ */ 声明List接口 #ifndef LIST_H_…
C#中的集合有几种? Array ArrayList List<T> Stack<T> Queue<T> Dictionary<K,V> HashTable   集合,表示可以通过遍历每个元素来访问的一组对象(特别是可使用foreach循环访问) 一个集合包括多个元素,即有一个集合类对象和N个元素对象  因为任何集合类都实现了IEnumerable接口,所以任何集合类对象都有一个GetEnumerator()方法,该方法可以返回一个实现了 IEnumerat…