摘要: Hashtable 和 HashMap 做为 Map 的基本特性 两者都实现了Map接口,基本特性相同 - 对同一个Key,只会有一个对应的value值存在 - 如何算是同一个Key? 首先,两个key对象的hash值相同,其次,key对象的equals方法返回真 内部数据结构 Hashtable和 阅读全文
posted @ 2012-07-04 23:10 carbs 阅读(16035) 评论(2) 推荐(4) 编辑
摘要: 用Map.Entry 和Map.entrySet() 遍历哈希表偶然今天发现HashMap 用到下面的格式 ,直接循环遍历整个hashMap hashTable返回的 set 中的每个元素都是一个 Map.Entry 类型。private Hashtable<String, String> emails = new Hashtable<String, String>();// 方法一: 用entrySet()// Iterator it = emails.entrySet().iterator();// while(it.hasNext()){// Map.Entry 阅读全文
posted @ 2012-07-04 22:39 carbs 阅读(1478) 评论(0) 推荐(0) 编辑
摘要: map,set,list,等JAVA中集合解析 在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父子关系: java.util +Collection 这个接口extends自 --java.lang.Iterable接口 +List 接口 -ArrayList 类 -LinkedList 类 -Vector 类 此类是实现同步的 +Queue 接口 +不常用,在此不表. +Set 接口 +SortedSet 接口 -TreeSet 类 -HashSet +Map 接口 -HashMap 类 (除了不同步和允许使用 null 键/值之外,与 Hashtabl. 阅读全文
posted @ 2012-07-04 22:37 carbs 阅读(1487) 评论(0) 推荐(1) 编辑
摘要: 我好土,真的。学用了四五年的JAVA,还从没用过 wait/notify,也不清楚它跟synchronized 关键字 相比有什么好处。今天查了些资料,终于明白了:wait/notify 机制是为了避免轮询带来的性能损失。 为了说清道理,我们用“图书馆借书”这个经典例子来作解释。 一本书同时只能借给一个人。现在有一本书,图书馆已经把这本书借了张三。 在简单的synchrnozed 同步机制下,李四如果想借,先要去图书馆查看书有没有还回来。李四是个心急的人,他每天都去图书馆查;而张三看书看得慢,过了半个月才把书还回来,结果李四在这半个月里全都白跑了,浪费了不少交通车费 而如果使用wai... 阅读全文
posted @ 2012-07-04 21:57 carbs 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 在java里提到clone技术,大家可能很快就会想到java.lang.Cloneable这个接口。大家可能都知道:所有具有clone功能的类都有一个特性,那就是它直接或间接地实现了Cloneable接口。但是仔细一翻看Cloneable接口的源码发现一个方法都没有。其实子类实现Cloneable接口,相当于一个标示:既在jvm的方法区中存放了想具有clone功能的类(子类)实现了的接口列表,如果接口列表中含有java.lang.Cloneable这个值,jvm将调用类中的clone();显然clone()必须重写自所有java类的祖宗类Object的这个方法;这个我们从Object类中clo 阅读全文
posted @ 2012-07-04 21:27 carbs 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 与普通程序不同的是,Java程序(class文件)并不是本地的可执行程序。当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader。 JVM本身包含了一个ClassLoader称为Bootstrap ClassLoader,和JVM一样,BootstrapClassLoader是用本地代码实现的,它负责加载核心JavaClass(即所有 java.*开头的类)。另外JVM还会提供两个ClassLoader,它们都是用Java语言编写的,由BootstrapClassLoa... 阅读全文
posted @ 2012-07-04 21:13 carbs 阅读(2253) 评论(0) 推荐(0) 编辑
摘要: 当垃圾回收器将要释放无用对象的内存时,先调用该对象的finalize()方法。如果在程序终止之前垃圾回收器始终没有执行垃圾回收操作,那么垃圾回收器将始终不会调用无用对象的finalize()方法。在Java的Object祖先类中提供了protected 类型的finalize()方法,因此任何Java类都可以覆盖finalize()方法,在这个方法中进行释放对象所占的相关资源的操作。 Java虚拟机的垃圾回收操作对程序完全是透明的,因此程序无法预料某个无用对象的finalize()方法何时被调用。另外,除非垃圾回收器认为程序需要额外的内存,否则它不会试图释放无用对象占用的内存。换句话说,以下情 阅读全文
posted @ 2012-07-04 19:19 carbs 阅读(273) 评论(0) 推荐(0) 编辑
摘要: ListView是 Android中经常会使用的东西,绑定数据对于初学者来说,尤其是刚接触编程的人来说,往往会觉得很难理解,我上大二的时候学的java,但是基本上相 当于没有学,什么都没写过,真正接触编程就是开始上手学android,把这些记录下来,自己可以回头看下,也可以让新手更好的理解。高手绕过....Android中Adapter我是这么理解的,是数据和视图之间的桥梁,数据在adapter中做处理,然后显示到视图上面。Adapter有很多种,有ArrayAdapter<T>, BaseAdapter, CursorAdapter, HeaderViewListAdapter, 阅读全文
posted @ 2012-07-04 18:13 carbs 阅读(191) 评论(0) 推荐(0) 编辑
摘要: java.util.Scanner是Java5的新特征,主要功能是简化文本扫描。这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java API文档中列举了大量的API方法,但是都不怎么地。一、扫描控制台输入这个例子是常常会用到,但是如果没有Scanner,你写写就知道多难受了。当通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可。 /** * 扫描控制台输入 * * @author leiz 阅读全文
posted @ 2012-07-04 09:12 carbs 阅读(17111) 评论(0) 推荐(0) 编辑