易截截图软件、单文件、免安装、纯绿色、仅160KB

Java笔试题:HashMap和HashTable的区别

今天参加网龙笔试,一题是关于HashMap和HashTable的区别,答的不好,回来赶紧学习学习....
HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类,也就是说建议使用HashMap,不要使用HashTable。可能你觉得HashTable很好用,为什么不用呢?这里简单分析他们的区别。 
1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。
2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。
4.HashTable使用Enumeration,HashMap使用Iterator。
以上只是表面的不同,它们的实现也有很大的不同。
5.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。
6.哈希值的使用不同,HashTable直接使用对象的hashCode,代码是这样的:
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;
而HashMap重新计算hash值,而且用与代替求模:
int hash = hash(k);
int i = indexFor(hash, table.length);
static int hash(Object x) {
  int h = x.hashCode();
  h += ~(h << 9);
  h ^= (h >>> 14);
  h += (h << 4);
  h ^= (h >>> 10);
  return h;
}
static int indexFor(int h, int length) {
  return h & (length-1);
}
总结:
1.HashTable的方法是同步的,而HashMap的方法不是。
2.HashMap可以让你将空值作为一个表的条目的key或value。
3.HashCode的计算算法不同


相关文档:

Java上的宝石 JRuby 1.5正式发布

Java上的宝石 JRuby 1.5正式发布
2010年05月12日,JRuby团队非常高兴的宣布1.5.0版的发布。在这之前,曾经发布过JRuby 1.5.0 RC1的发布消息,相比之下,正式发布本本又提供了很多更新。
JRuby 1.5.0 版本的主页和下载地址分别是:
主页:http://www.jruby.org/
下载:http://www.jruby.org/download
这次发布是JRuby历 ......

Java IO框架

可从IO的类层次,IO框架的设计模式来论述。
总体来说,IO可以分为字节流和字符流,不同在于字符流由字节流包装而来,在IO读入之后经过JVM处理,把字节流转换成字符流。而字符流的字符采用哪种字符编码实现由JVM默认编码决定。
而每个流都分输入和输出,所以,总体来说,IO有四个顶层类:
InputStream
OutputStream ......

JNA实现Java调用Fortran

在成功实现Java调用C++之后,接下来想到能否通过JNA实现Java调用Fortran,今天试验了一下,还是比较容易的。
网上有一个Java调用F95的例子,但是我考虑不仅要实现F95的调用,还要实现F77的调用,所以费了一些周折。
问题的关键在于F77为过程名自动添加了一个尾部的下划线,所以sub1这个过程,到Java一端,就变成了sub1_, ......

Java:WebService:XFire 与Axis2比较

 
XFire VS Axis
XFire是与Axis2 并列的新一代WebService平台。之所以并称为新一代,因为它:
1、支持一系列Web Service的新标准--JSR181、WSDL2.0 、JAXB2、WS-Security等;
2、使用Stax解释XML,性能有了质的提高。XFire采用Woodstox 作Stax实现;
3、容易上手,可以方便快速地从pojo发布服务; 
4、Sprin ......

Java语言活的jdk、jre和操作系统版本等信息

      System.out.println(System.getProperty("java.version")); //java版本号
System.out.println(System.getProperty("java.vendor")); //Java提供商名称
System.out.println(System.getProperty("java.vendor.url")); //Java提供商网站
System.out.println( ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号