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

Java中HashMap,Hashtable和LinkedList

今天碰到一个很有意思的问题,就是关于使用LinkedList作为HashMap或者Hashtable得key,但是最后发现数据并没有存进去。
首先说一下HashMap,Hashtable吧,它们都继承了Cloneable, Map, Serializable。它们两个基本上是一样的,“The HashMap
class is roughly equivalent to Hashtable
, except that it is
unsynchronized and permits nulls.”。区别就是HashMap允许“ null

values and the null

key”,同时 unsynchronized。它的性能取决于“ initial capacity
and load factor
”,具体参考官方文档。HashMap还有一个特性就是不能保证存入的元素的顺序,“HashMap does not guarantee that the order
will remain constant over time。” 对于存入到里面的key,要求“To successfully store and retrieve objects from a hashtable, the
objects used as keys must implement the hashCode

method and the equals
method. ”。更具我的测试,其实这个对于HashMap也是适用的。
这个就和我今天碰到的问题联系上了,LinkedList类里面的hashCode()函数来源于List.hashCode(),具体如下:
int hashCode = 1;
Iterator<E> i = list.iterator();
while (i.hasNext()) {
E obj = i.next();
hashCode = 31*hashCode + (obj==null ? 0 : obj.hashCode());
}
也就是说hashCode依赖于内部存储的对象,恰好我存储的是一个抽象类,以方便实现多态性,所以并没有实现hashCode函数。如果存储的是类似String的基本数据类型或者是实现了hashCode函数的对象就可以了。
最后还有一个和HashMap有点容易混淆的类就是TreeMap。它继承了“Serializable, Cloneable, Map<K,V>, SortedMap<K,V>”,是SortedMap接口类唯一的实现。它本质上是“Red-Black tree”,里面存储的key是升序排列的,“ascending key order”。
参考:
http://java.sun.com/j2se/1.4.2/docs/api/java/util/HashMap.html
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Hashtable.html
http://java.sun.com/j2se/1.5.0/docs/api/java/util/LinkedList.html
http://java.sun.com/j2se/1.5.0/docs/api/java/util/TreeMap.html
http://java.sun.com/j2se/1.5.0/docs/api/java/util/SortedMap.html


相关文档:

在java中使用key value型数据库Berkeley DB

除了关系型数据库外,还有key-value型数据库可以选择,在大型的查询系统中,key-value型数据库可以出色的完成某些任务。
Oracle的Berkeley DB就是一种key-value型数据库,本文简要介绍在java中使用Berkeley DB。
PartKey.java:
import java.io.Serializable;
public class PartKey implements Serializable
{
priva ......

Java模拟HTTP的Get和Post请求

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.meth ......

java 日期格式化

1 SimpleDateFormat担当重任,怎样格式化都行
import java.util.Date;
import java.text.SimpleDateFormat;
public class Demo
{
public static void main(String[] args)
{
Date now=new Date();
SimpleDateFormat f=newSimpleDateFormat("今天是"+"yyyy年MM月dd日 E kk点mm分");
System.out.println(f.fo ......

MyEclipse注册JAVA程序代码!

package cn.vicky.reg;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class MyEclipseReg {
// ///////////////////////////////////////////////////////////
// 运行该文件 输入用户名 点击回车即可生成 MyEclipse 6.0 和 7.0 通用户注册码
// ///// ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号