2012年7月20日
摘要: Java的集合分为三种1、集合Set Set集合的元素不区分顺序,且不允许出现相同元素。这里同样的元素指的是以equals()方法判断的2、列表List List列表中的记录元素添加的顺序,而且可以填充相同的元素。3、映射Map 映射中包含的都是“键(Key)-值(value)”对,且一个键对应一个值。所以键是不可以重复的。注意:Java集合中只能存储引用类型的引用,且和数组一样集合存储的只是引用并非对象。Set:java.util.Collection是Set与List集合接口的根接口这个接口定义一个有关集合操作的普遍方法例:Set<String> set=new HashSet 阅读全文
posted @ 2012-07-20 17:09 Nolan 阅读(2242) 评论(0) 推荐(0) 编辑
摘要: BeanUtils.copyProperties()方法这两天在反复的处理着一个问题,类A的一个对象a类B的一个对象b对象a和对象b有一些共同的属性(属性的类型名称相同均相同)然后想把a对象的属性值赋给b对象(a和b共同的属性)于是分别写a.setXX(b.getXX());a.setXX(b.getXX());a.setXX(b.getXX());a.setXX(b.getXX());a.setXX(b.getXX());a.setXX(b.getXX());发现属性多的时候这样写会很麻烦,于是便想有没有一个方法可以实现这个操作。通过查询资料发现一个BeanUtils.copyPropert 阅读全文
posted @ 2012-07-20 16:38 Nolan 阅读(2957) 评论(0) 推荐(0) 编辑
摘要: 某个类要想实现拷贝的功能,就必须实现Cloneable接口,并覆盖Object的clone()方法,才能真正实现克隆。浅拷贝,一种默认的实现,Teacher类中的clone方法的实现就是浅拷贝。Student类的clone方法就是深拷贝。注意super.clone返回的对象实际上是被类的对象,可以放心强制转换,至于为什么,我也不知道,估计得读虚拟机规范,从Object源码看也不到什么,因为是protect native Object clone();importjava.util.*;publicclassTestClone{publicstaticvoidmain(String[]args) 阅读全文
posted @ 2012-07-20 10:35 Nolan 阅读(746) 评论(0) 推荐(0) 编辑
  2012年7月19日
摘要: Collections类中提供了多个synchronizedXxx,该方法返回指定集合对象对应的同步对象,从而可以解决多线程并发访问集合时的线程安全问题.正如Java中常用的集合框架推荐使用的三个实现类:HashSet\ArrayList\HashMap都是线程不安全的.如果有多条线程访问它们,而且有超过一条的线程试图修改它们,则可能出现错务.Collections提供了多个静态方法用于创建同步集合下面程序创建了四个同步的集合对象import java.util.*;public classTestSynchronized{public static void main(String[] ar 阅读全文
posted @ 2012-07-19 20:26 Nolan 阅读(2246) 评论(0) 推荐(0) 编辑
摘要: 1) 为啥要用HahSet? 假如我们现在想要在一大堆数据中查找X数据。LinkedList的数据结构就不说了,查找效率低的可怕。ArrayList哪,如果我们不知道X的位置序号,还是一样要全部遍历一次直到查到结果,效率一样可怕。HashSet天生就是为了提高查找效率的。(2) hashCode 散列码 散列码是由对象导出的一个整数值。在Object中有一个hashCode方法来得到散列码。基本上,每一个对象都有一个默认的散列码,其值就是对象的内存地址。但也有一些对象的散列码不同,比如String对象,它的散列码是对内容的计算结果:Java代码//String对象的散列码计算Stringstr 阅读全文
posted @ 2012-07-19 20:22 Nolan 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 虽然Java语言不直接支持关联数组 -- 可以使用任何对象作为一个索引的数组 -- 但在根Object类中使用hashCode()方法明确表示期望广泛使用HashMap(及其前辈Hashtable)。理想情况下基于散列的容器提供有效插入和有效检索;直接在对象模式中支持散列可以促进基于散列的容器的开发和使用。定义对象的相等性Object类有两种方法来推断对象的标识:equals()和hashCode()。一般来说,如果您忽略了其中一种,您必须同时忽略这两种,因为两者之间有必须维持的至关重要的关系。特殊情况是根据equals()方法,如果两个对象是相等的,它们必须有相同的hashCode()值(尽 阅读全文
posted @ 2012-07-19 20:21 Nolan 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 学过算法的朋友都知道,散列可以在一定程序上提高查找效率,甚至可以压缩一些序列。Java中也有些集合都用到了它。下面先介绍一下散列。散列,也叫hash,即经常听到的哈希表。一般都是由一个固定长度的数组组成,经常会结合链表来实现。其实就是把任意长度的输入(即预映射,pre-image),通过特定的散列算法,变成固定长度的输出。最常用在信息安全领域的加密算法上面,但这里我们不讨论这个。 在散列时,结构中存在关键字K,则把它映射到f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为 散列函数(Hash function),按这个思想建立的表为散列表。 对不同的关键字可能得... 阅读全文
posted @ 2012-07-19 20:21 Nolan 阅读(450) 评论(0) 推荐(0) 编辑