java
peach_li
不牛不是我
展开
-
java hashtable 和 hashmap的区别
1 HashMap不是线程安全的 hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。2 HashTable是线程安全的一个Collection。HashMap是Hashtable的轻量级实现(非线程安全的实现),他们原创 2015-10-12 22:00:45 · 317 阅读 · 0 评论 -
DFS,BFS,前序,中序,后序,层序遍历
前序,中序,后序都可以看作是DFS,用栈实现,因为他们都是在找到叶子节点前一直遍历。 层序遍历属于BFS,用堆实现,因为它们是一层一层遍历。以下是引用博客中一位大神的实现前序,中序,后序的代码:import java.util.HashMap; import java.util.LinkedList; import java.util.Map; import java.util.Que原创 2016-02-29 20:49:46 · 5301 阅读 · 0 评论 -
逆波兰表达式
后缀表达式的计算 从左至右扫描整个表达式,如果遇到是字符,则直接压入栈中 如果遇到运算符,则栈中弹出相应个数的字符(一目弹出一个,二目弹出两个),进行运算,并将运算结果压入栈中。 重复1、2,扫描表达式完成,栈顶元素即是结果。中缀表达式转成后缀表达式: ·开始扫描; ·数字时,加入后缀表达式; ·运算符: a. 若为最高级的运算符,入栈; b. 若为 ‘(‘,入栈; c. 若为 ‘原创 2016-03-25 10:50:30 · 436 阅读 · 0 评论 -
前序遍历和中序遍历求后序遍历
一个二叉树前序遍历:GDAFEMHZ 中序遍历:ADEFGHMZ 求其后续遍历。求解过程 0.这三种遍历不知道是什么意思的请自行搜索。 1.通过前序遍历我们可知此树根节点为G(即前序遍历第一个字符) 2.观测中序遍历可知此树左子树所有节点为:ADEF 右子树所有节点为:HMZ(以根节点划分) 3.得到左子树的前序遍历(DAFE)中序遍历(ADEF)原创 2016-03-25 11:02:00 · 890 阅读 · 0 评论 -
双亲委派机制总结
预定义类加载器和双亲委派机制JVM预定义的三种类型类加载器:启动(Bootstrap)类加载器:是用本地代码实现的类装入器,它负责将 /lib下面的类库加载到内存中(比如rt.jar)。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。标准扩展(Extension)类加载器:是由 Sun 的 ExtClassLoa转载 2016-03-25 23:07:25 · 742 阅读 · 0 评论 -
java I/O总结
Java I/O 输入流,输出流,字符流,字节流,处理流,,,原创 2016-03-26 12:03:46 · 676 阅读 · 0 评论 -
JVM从加载到结束流程
JVM从加载到结束流程原创 2016-04-09 08:58:47 · 569 阅读 · 0 评论 -
equals与hashCode的区别及联系
一、equals方法的作用 1、默认情况(没有覆盖equals方法)下equals方法都是调用Object类的equals方法,而Object的equals方法主要用于判断对象的内存地址引用是不是同一个地址(是不是同一个对象)。2 、要是类中覆盖了equals方法,那么就要根据具体的代码来确定equals方法的作用了,覆盖后一般都是通过对象的内容是否相等来判断对象是否相转载 2016-04-09 14:28:23 · 343 阅读 · 0 评论 -
反射机制总结
类的使用万事万物皆为对象,类也是对象,任何一个类都是Class类的对象。Class c1就声明了一个Class类的实例对象,但是不能通过new关键字来创建,而是有一下三种方法创建。1、Class c1 = Foo.class;//任何一个类都有一个隐含的静态成员变量class,如果Foo已经存在,可以用这种方法来创建Foo的类类型(class type),即Foo类的类类型就是Class类的一个原创 2016-04-10 12:05:35 · 475 阅读 · 0 评论 -
java注解
JDK内置系统注解 @Override 用于修饰此方法覆盖了父类的方法; @Deprecated 用于修饰已经过时的方法; @SuppressWarings(“deprecation”) 用于通知java编译器忽略特定的编译警告。 @ Inherited:用来阐述某个被标注的类型是被继承的注解分类:一:按运行机制 1、源码注解:只在源码中存在,编译时不存在 2、原创 2016-04-10 15:12:33 · 468 阅读 · 0 评论 -
LeetCode-146. LRU Cache
Problem: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set. get(key) - Get the value (will always be positive) of原创 2016-04-15 10:37:15 · 720 阅读 · 0 评论 -
Hash概率问题
Hash是把锋利的刀子,处理海量数据时经常用到,大家可能经常用hash,但hash的有些特点你是否想过、理解过。我们可以利用我们掌握的概率和期望的知识,来分析Hash中一些有趣的问题,比如:平均每个桶上的项的个数平均查找次数平均冲突次数平均空桶个数使每个桶都至少有一个项的项个数的期望 本文hash的采用链地址法发处理冲突,即对hash值相同的不同对象添加到ha原创 2016-04-15 10:42:16 · 8523 阅读 · 0 评论 -
java多线程学习总结
进程和线程的区别进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。 线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。 多进程是指操作系统能同时运行多个任务(程序)。 多线程是指在同一程原创 2016-05-03 11:45:08 · 3540 阅读 · 2 评论 -
各种排序算法的分析及java实现
排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键转载 2016-04-21 11:32:08 · 545 阅读 · 0 评论 -
Java单链表接本操作
Java单链表基本操作: (一)顺序查找; (二)指定位置增加节点; (三)删除当前节点; (四)单链表反转; (五)输出倒数第K个节点; (六)删除重复节点; (七)排序 (八)合并两个排序单链表; (九)交换相邻节点的值; (十)O(n)时间内查找单链表的中间节点 (十一)逆序(从尾至头)输出单链表 (十二)判断单链表是否有环 (十三)判断两个原创 2016-08-14 21:13:40 · 764 阅读 · 0 评论 -
HashMap实现原理解读
目录(?)[+]1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达转载 2016-03-24 14:31:50 · 364 阅读 · 0 评论 -
java list add 方法理解
java list add 方法理解 void add(int index, E element) 在列表的指定位置插入指定元素(可选操作)。将当前处于该位置的元素(如果有的话)和所有后续元素向右移动(在其索引中加 1)。参数: index - 要在其中插入指定元素处的索引 element - 要插入的元素 抛出: UnsupportedOperationException - 如果列表不原创 2016-02-29 11:30:54 · 4150 阅读 · 0 评论 -
String 常用方法
转自:http://www.cnblogs.com/crazyac/articles/2012791.htmljava中String的常用方法1、length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length();2、charAt(转载 2016-03-23 11:14:29 · 230 阅读 · 0 评论 -
基数排序
基数排序与本系列前面讲解的七种排序方法都不同,它不需要比较关键字的大小。它是根据关键字中各位的值,通过对排序的N个元素进行若干趟“分配”与“收集”来实现排序的。 不妨通过一个具体的实例来展示一下,基数排序是如何进行的。 设有一个初始序列为: R {50, 123, 543, 187, 49, 30, 0, 2, 11, 100}。我们知道,任何一个阿拉伯数,它的各个位转载 2016-03-17 10:18:15 · 571 阅读 · 0 评论 -
冒泡排序、选择排序、插入排序
最近在看数据结构与算法分析,想写个笔记记录一下,先从基本的冒泡、选择、插入开始吧。注:都是以增序为例说明一、冒泡排序 1、原理:从数组的第一个位置开始两两比较array[index]和array[index+1],如果array[index]大于array[index+1]则交换array[index]和array[index+1]的位置,止到数组结束;转载 2016-03-17 10:24:18 · 314 阅读 · 0 评论 -
Java集合深入学习总结-ArrayList
深入Java集合学习系列:ArrayList的实现原理1. ArrayList概述: ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数原创 2016-03-29 17:36:55 · 1459 阅读 · 0 评论 -
快速排序
高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列转载 2016-03-17 11:57:58 · 250 阅读 · 0 评论 -
堆排序
堆排序 Heap Sort堆排序 Heap Sort 堆排序是一种选择排序,其时间复杂度为O(nlogn)。堆的定义 n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。 情形1:ki 2i 且ki 2i+1 (最小化堆或小顶堆) 情形2:ki >= k2i 且ki >= k2i+1 (最大化堆或大顶堆) 其中i=1,2,…转载 2016-03-17 12:05:51 · 1196 阅读 · 0 评论 -
java 值传递与地址传递(引用)的区别
JAVA传递参数有两种方式:值传递和引用传递值传递是传递数据:如基本数据类型都是值传递引用传递是把形参和实参的指针指向了堆中的同一对象,对象的引用和数组的引用。 注意: 实参,Java的基本数据类型,如int,double等在函数的参数传递时,传递的是副本。String也属于这一范畴。 形参,而如果是对象,则传递的是引用。如下代码实例:public class MainActiv原创 2016-03-05 21:04:19 · 4382 阅读 · 1 评论 -
Java集合深入学习总结-LinkedHashSet
1. LinkedHashSet概述: LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。 注意,此实现不是同步的。如果多个线程同时访问链接的哈希Set,而其中至少一个线程修改了该Set,则它必原创 2016-03-31 17:51:41 · 453 阅读 · 0 评论 -
Java集合深入学习总结-LinkedHashMap
1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代原创 2016-03-31 17:49:37 · 824 阅读 · 0 评论 -
Java集合深入学习总结-HashSet
1. HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 2. HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此Hash原创 2016-03-31 17:57:27 · 459 阅读 · 0 评论 -
Java集合深入学习总结-HashMap
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这原创 2016-03-31 18:00:08 · 759 阅读 · 0 评论 -
Java面试题全集(上)
转载自:http://blog.csdn.net/jackfrued/article/details/449219412013年年底的时候,我看到了网上流传的一个叫做《Java面试题大全》的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对这个所谓的《Java面试大全》进行了全面的修订并重新发布在我的CSDN博客。在修订转载 2016-03-20 11:13:52 · 1886 阅读 · 1 评论 -
Java函数参数值传递还是引用传递
该文转载自:http://www.importnew.com/3559.htmlJava确实使用对象的引用来做计算的,所有的对象变量都是引用。但是,Java在向方法传递参数时传的不是引用,是值。以 badSwap() 函数为例:public void badSwap(int var1, int var2){ int temp = var1; var1 = var2; var转载 2016-03-10 11:23:03 · 707 阅读 · 0 评论 -
java 初始化顺序
1 无继承情况下的Java初始化顺序:class Sample{ Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用");转载 2016-03-22 23:15:22 · 253 阅读 · 0 评论 -
关于war包 jar包 ear包 及打包方法
war包:是做好一个web应用后,通常是网站打成包部署到容器中jar包:通常是开发的时候要引用的通用类,打成包便于存放管理。ear包:企业级应用 通常是EJB打成ear包各种包的打法:转:兄弟,对java着迷吗,或者是为了自己的生计,不论怎样都欢迎你进入精彩java世界,welcome!可能你刚刚对每个人说:Hello World!也或者……ok!这已经足够了。那就让我们开始吧原创 2016-11-24 15:31:40 · 3574 阅读 · 0 评论