Java进阶
文章平均质量分 69
this.
这个作者很懒,什么都没留下…
展开
-
Java集合框架简述
Java集合框架实现了线性表、链表和哈希表这几类数据结构,为我们在程序开发带来了许多便捷。Java集合框架分为两部分:1.集合,用于存数一个元素集合;2.图,用来存储键值对。该文主要对JDK中Collection和Map两个接口中进行简述。一、Collection接口Java集合框架中主要支持三种类型的集合:1.Set(规则集) 2.List(线性表) 3.Queue(队列),其层级关系如原创 2015-12-19 16:16:40 · 4286 阅读 · 0 评论 -
HashMap原理分析
HashMap在开发中算是一个很常见的数据结构,从字面上的Hash这个单词都可以大概推测出其内部使用的数据结构会有哈希表。之前也对其内部实现思想有一定了解,除了哈希表外,也用到了链表来实现保存相同hash值的键所对应的键值对。 简单地回顾下哈希表: 哈希表的实现无非是个数组,每个值都会通过散列函数来获取对应的数组下标,从而存在数组的相应位置。一旦两个值的哈希值相同,就会用链表连接起来。如上图原创 2016-10-12 22:30:42 · 795 阅读 · 0 评论 -
关于字符串String,你所需要注意的细节
以前在编写Java程序时为了图个方便,拼接字符时总是用”+”来实现,而不用StringBuilder。直到近来看了《Thiking in java》这本书关于字符串的介绍才恍然大悟!原来这样子做反而会降低效率,有时甚至会使程序出错! 关于String首先要知道String对象是一个不可变的。什么是不可变?即每次对String的对象进行修改都会创建一个全新的String对象,然后保存修改后的字符串。原创 2016-03-26 23:32:24 · 855 阅读 · 0 评论 -
简析散列和散列码
在学习散列集集或者图(Map)时,我们也许对这两个方法并不陌生:equals()和hashCode();添加到散列集中的对象必须以正确地方式实现hashCode()方法才能确保集合中不出现重复的值。最近在阅读《Thinking in Java》这本书时,里面有对其系统地介绍,现将其总结一下:初步了解散列码在开发中,我们对于HashMap的使用并不陌生,但有时却也会犯错。我们先看一个例子://定义人这原创 2016-03-28 19:42:48 · 3807 阅读 · 3 评论 -
Java对象的强、软、弱和虚引用
本博客转自http://zhangjunhd.blog.51cto.com/113473/530921.对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期转载 2016-04-07 18:30:29 · 733 阅读 · 0 评论 -
关于Java垃圾回收机制,你所需要知道的一切
本博客转自http://blog.csdn.net/zsuguangh/article/details/64295921. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对转载 2016-03-27 10:20:21 · 4394 阅读 · 0 评论 -
深入线程:生产者与消费者问题
生产者与消费者问题无疑是线程间通信协作的经典案例。下面来看一看”生产者/消费者“的一个简单案例: 首先,我们定义一个缓冲区Buffer,这个缓冲区用来存取数据,但缓冲区大小为1,即每次只能存取一个数据。public class Buffer { private ArrayList<Integer> list = new ArrayList<>(1); //定义一个大小为1的数组线性表,用原创 2016-03-26 20:15:09 · 758 阅读 · 0 评论 -
Java多线程
前言:线程是java的重要功能之一,多线程能使程序反应更快,交互性更强,执行效率更高。一、任务和线程的创建任务就是对象。为任务创建线程可以简单分为以下两种:1.继承Thread类 2.实现Runnable接口。 示例程序片段: 1.继承Thread类class Task extends Thread{ @Override public void run() { s原创 2016-01-21 17:45:44 · 849 阅读 · 0 评论 -
Java使用socket网络编程实现多人聊天室
前言:套接字(socket)编程能够实现服务器和客户端的通信,以下通过Socket编程实现多人聊天室。 程序展示: 界面类1.客户端界面 ClientView.javapublic class ClientView extends JFrame implements ActionListener, KeyListener, Runnable { private JTextArea t原创 2016-01-21 19:52:54 · 24214 阅读 · 7 评论 -
关闭线程的正确方式?
最近无意间看到一些面试题,提到如何关闭一个线程。然后就在想,关闭线程不就是调用Thread.stop()的方法就好了吗?现在看来还真是有些问题了。翻了下Effective java那本书,了解到原来stop方法在很久之前就不提倡使用,因为这个方法是不安全的。 那么,要怎么去关闭一个正在执行的线程呢?一开始就想到用一个boolean变量去控制:public class ThreadExample e原创 2016-11-25 13:14:59 · 11684 阅读 · 2 评论