java
阿誠的数据杂货铺
就是个打杂的
展开
-
栈和队列
设计一个有GetMin功能的栈【题目】实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作【要求】1.pop、push、getMin操作时间复杂度都是O(1)2.设计的栈类型可以使用现成的栈结构【思路】使用两个栈,一个栈用来保存当前栈中的元素,期功能和一个正常的栈没有区别,这个栈记为stackData;另一个栈用于保存每一步的最小值,这个栈记为Stac...转载 2019-03-31 15:33:13 · 130 阅读 · 0 评论 -
Java08——Map架构
我们先学习Map,然后再学习Set;因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。首先,我们看看Map架构。如上图:(01) Map 是映射接口,Map中存储的内容是键值对(key-value)。(02) AbstractMap 是继承于Map的抽象类,它实现了Map中的大部分API。其它Map的...转载 2019-08-31 09:22:38 · 128 阅读 · 0 评论 -
Java09 —— HashMap详细介绍(源码解析)和使用示例
概要这一章,我们对HashMap进行学习。我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap。内容包括:第1部分 HashMap介绍第2部分 HashMap数据结构第3部分 HashMap源码解析(基于JDK1.7.0_45) 第3.1部分 HashMap的“拉链法”相关内容 第3.2部分 HashMap的构造函数 第3...转载 2019-08-31 10:42:51 · 276 阅读 · 0 评论 -
Java10 —— Java 集合系列 10 Hashtable详细介绍(源码解析)和使用示例
前一章,我们学习了HashMap。这一章,我们对Hashtable进行学习。我们先对Hashtable有个整体认识,然后再学习它的源码,第1部分 Hashtable介绍第2部分 Hashtable数据结构第3部分 Hashtable主要方法 3.1put() 3.2 get() 3.3 putAll() 3.4 clear() 3.5 contains()...转载 2019-08-31 12:45:25 · 258 阅读 · 0 评论 -
Java11 —— hashmap 和 hashtable 的区别
一、Hashtable和HashMap做为Map的基本特性两者都实现了Map接口,基本特性相同1、对同一个Key,只会有一个对应的value值存在2、如何算是同一个Key? 首先,两个key对象的hash值相同,其次,key对象的equals方法返回真二、内部数据结构Hashtable和HashMap的内部数据结构相似 —— 基本内部数据结构是一个Entr...转载 2019-08-31 14:59:31 · 178 阅读 · 0 评论 -
Java接口与抽象类 —— 何时使用抽象类?何时使用接口?
一、抽象类抽象类的关键字为abstract,抽象类被创造出来就是为了继承,简单明了地告诉用户跟编译器自己大概是长什么样子的。例如抽象类申明的语法:abstract class Abc { abstract void fun();}抽象类有以下几个特性:1、抽象方法必须为public、protected(若为private,则不能给子类继承,子类无法实现该方法,所以无...转载 2019-08-31 15:35:18 · 189 阅读 · 0 评论 -
Java 集合系列 12 —— TreeMap
概要第1部分 红黑树简介第2部分TreeMap数据结构第3部分TreeMap put()方法 3.1TreeMap put()方法分析 3.2 TreeMap put()代码第4部分TreeMap delete()方法 4.1TreeMap delete()方法分析 4.2 TreeMap delete()代码第5部分 TreeMap的相关函数...转载 2019-08-31 20:03:20 · 1130 阅读 · 0 评论 -
Java 集合系列 15 Map总结
概述第1 部分 Map 概述第2 部分内部哈希: 哈希映射技术第3 部分 Map 优化3.1 调整实际大小3.2 负载因子一、 Map 概述Map:“键值”对映射的抽象接口。该映射不包括重复的键,一个键对应一个值。SortedMap:有序的键值对接口,继承Map接口。NavigableMap:继承SortedMap,具有了针对给定搜索目标返回最接近...原创 2019-08-31 20:15:37 · 149 阅读 · 0 评论 -
Java —— Synchronized的基本知识、实现原理以及其与ReentrantLock的区别
一、synchronized知识 在谈论synchronized之前,我们需要了解线程安全问题的主要诱因。线程安全问题的主要诱因如下:存在共享数据(也称为临界资源) 存在多条线程共同操作这些共享数据 而解决线程安全的根本方法就是:同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作。 基于上述,引入了互斥锁,其具有两个特性:互...转载 2019-09-01 09:06:26 · 166 阅读 · 0 评论 -
JAVA系列 —— JAVA中对象什么时候死亡以及什么时候执行finalize()方法
一、可达性算法 —— 根搜索算法要知道对象什么时候死亡,我们需要先知道JVM的GC是如何判断对象是可以回收的。JAVA是通过可达性算法来来判断对象是否存活的。这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots 没有任何引用链相连时,则证明此对象是不可用的。在JAVA语言...转载 2019-09-02 16:06:03 · 344 阅读 · 0 评论 -
Java07 —— List总结(LinkedList, ArrayList等使用场景和性能分析)
一、List回顾List框架图1、List 是一个接口,它继承于Collection的接口。它代表着有序的队列。2、 AbstractList 是一个抽象类,它继承于AbstractCollection。AbstractList实现List接口中除size()、get(int location)之外的函数。3、 AbstractSequentialList 是一个抽象类,它...转载 2019-08-30 23:42:51 · 182 阅读 · 0 评论 -
Java05——Vector详细介绍(源码解析)和使用示例
一、Vector介绍Vector 是矢量队列,它是JDK1.0版本添加的类。继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口。Vector 继承了AbstractList,实现了List;所以,它是一个队列,支持相关的添加、删除、修改、遍历等功能。Vector 实现了RandmoAccess接口,即提供了随机访问功能 ——通...转载 2019-08-30 22:09:35 · 156 阅读 · 0 评论 -
Hive+Sqoop+Mysql整合代码
1.模拟数据代码import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.io.Serializable;import java.tex...转载 2019-07-27 21:20:32 · 148 阅读 · 0 评论 -
Java 的Arrays.fii()用法
二维数组map[][]的初始化为某一个相同的值,除了用双重循环赋初值,还可以用Arrays.fill()填充Tips:Arrays.fill()并不能提高赋值的效率,而且在函数内部也是用for循环实现的下面是fill()的源码:public static void fill(Object[] a, Object val){ for(int i = 0,len = a.le...原创 2019-07-28 18:19:32 · 255 阅读 · 0 评论 -
Java基本类型能够占用的字节数
Java编译器默认使用Unicode编码,String.getBytes(encoding)方法是获取指定编码的byte数组表示注:1字节(byte)=8位(bits)1字节: byte, boolean2字节: short, char4字节: int, float8字节: long, double注:1字节(byte)=8位(bits)中文:(中文占用字节数2-4)...原创 2019-08-29 15:04:47 · 121 阅读 · 0 评论 -
String在Java中存储
目录总结:1、中文怎么存储?2、字符串存储3、String、StringBuffer、StringBuilder4、类与接口的区别中文怎么存储?什么时候char型不能存储汉字?char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字...原创 2019-08-29 23:51:06 · 554 阅读 · 0 评论 -
Java——Object的Hashcode方法和作用
1、 hashcode()和equals()这两个方法都来自java.lang.Object类,在Object中hashCode()返回的是对象的地址值,equals()方法是两个对象的地址的比较;如果equals()返回值相同,说明两个对象的地址值是相同的,所以hashCode()的返回值也是相同的。Part 1、 hashCode的作用Java集合中有两类,一类是List,一类是S...转载 2019-08-30 11:02:37 · 2933 阅读 · 6 评论 -
Java概览
Java 迭代器理解Java常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Collections)、。主干:Collection和MapCollection:一个接口,是高度...转载 2019-08-30 14:14:54 · 713 阅读 · 0 评论 -
Java02——Collection
Collection是一个接口,两个分支:List和Set,都继承Collection。List是有序的队列,可以有重复的元素;Set是数学概念中的集合,没有重复元素!List和Set都有它们各自的实现类。为了方便,我们抽象出了AbstractCollection抽象类,它实现了Collection中的绝大部分函数;这样,在Collection的实现类中,我们就可以通过继承Ab...转载 2019-08-30 15:09:04 · 3086 阅读 · 0 评论 -
Java03——ArrayList详细介绍(源码解析)和使用示例
第1部分 ArrayList简介第2部分 ArrayList数据结构第3部分 ArrayList源码解析(基于JDK1.6.0_45)第4部分 ArrayList遍历方式第5部分 toArray()异常一、ArrayList简介ArrayList 是一个数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, Rando...转载 2019-08-30 16:25:09 · 173 阅读 · 0 评论 -
Java04——LinkedList详细介绍(源码解析)和使用示例
一、LinkedList介绍LinkedList是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList实现List接口,能对它进行队列操作。LinkedList实现Deque接口,即能将LinkedList当作双端队列使用。LinkedList实现了Cloneable接口,即覆盖了函数clo...转载 2019-08-30 21:35:22 · 217 阅读 · 0 评论 -
JAVA系列 —— 阻塞非阻塞 同步异步 IO模型及其应用 NIO实现原理
一、NIO的与IO的区别:1、IO是面向流的,NIO是面向缓冲的;2、IO是阻塞的,NIO是非阻塞的;3、IO是单线程的,NIO 是通过选择器来模拟多线程的;1. 通道通道 Channel 是对原 I/O 包中的流的模拟,可以通过它读取和写入数据。通道与流的不同之处在于,流只能在一个方向上移动(一个流必须是 InputStream 或者 OutputStream 的子类),而...转载 2019-09-02 18:56:28 · 1346 阅读 · 0 评论