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

java集合框架


 
 
Java为数据结构的映射定义了一个接口java.util.Map.它有四个实现类,分别是HashMap, Hashtable,LinkedHashMap和TreeMap主要用于存储键值对,根据键得到值,因此不允许键重复,但允许值重复。
HashMap是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序完全是随机的。HashMap最多只允许一条记录的键为Null,允许多条记录的值为Null,当get()方法返回null值时,既可以表示HashMap中没有该键,也可以表示该键所对应的值为null,因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用Collections的synchronizdeMap方法使HashMap具有同步能力,或者使用ConcurrentHashMap.另外HashMap是基于哈希表实现的,HashMap的键得重写hashCode()和equals()方法。
 
TreeMap
是实现SortedMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。所以TreeMap的键得实现Comparabl,没有实现的话就要给TreeMap指定一个Comparator
Hashtable中的方法是同步的,也即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而Hashtable不允许键值为空。
内部哈希:哈希映射技术
几乎所有通用Map都使用哈希映射,这是一种将元素映射到数组的非常简单的机制,您应了解哈希映射的工作原理,以便充分利用Map.
哈希映射结构由一个存储元素的内部数组组成,由于内部采用数组存储,因此必然存在一个用于确定任意键访问数组的索引机制,实际上该机制需要提供一个小于数组大小的整数索引值,该机制称作哈希函数。在Java基于哈希的Map中,哈希函数将对象转换为一个适合内部数组的整数,您别不必为寻找一个易于使用的哈希函数而大伤脑筋:每个对象都包含一个返回整数值的hashCode()方法,要将该值映射到数组,只需将其转换为一个正值,然后将该值除以数组大小后取余数即可,以下是一个简单的,适用于任何对象的Java哈希函数
int hashvalue = Maths.abs(key.hashCode()) % table.length;
(%二进制运算符(称作模)将左侧的值处以右侧的值,然后返回整数形式的余数。)
实际上,在1.4版发布之前,这就是各种基于哈希


相关文档:

通过 DAOFactory 的泛型写法来演示Java泛型的特殊用法

通过 DAOFactory 的泛型写法来演示Java泛型的特殊用法
小型项目中常常都没有用三方持久化框架,而大都是用公司或自行依据DAO模式封装的一些组件来完成数据库持久化动作,并且,通常为了更具可扩展性,常常使用抽象工厂模式来解耦合。
一、先看代码
1、简单工厂代码
/************************************************* ......

语言混编之java调用c dll jni技术小试

刚从网上看到c和java混编的文章,就亟不可待的尝试了一下。呵呵,效果还是很好的。下面将自己成果粘贴出来
(转载于http://www.zxbc.cn/html/20070518/19986.html)。实验之后可以通过。
1java中调用c语言
首先编写Main.java
public class Main 
{
 public native static int getStrNum(byte str[], int s ......

Java注释规范[转载]

注释的原则
1、 注释形式统一
在整个应用程序中,使用具有一致的标点和结构的样式来构造注释。如果在其他项目组发现他们的注释规范与这份文档不同,按照他们的规范写代码,不要试图在既成的规范系统中引入新的规范。
2、 注释的简洁
内容要简单、明了、含义准确,防止注释的多义性,错误的注释不但无益反而有 ......

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 通用户注册码
// ///// ......

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
unsy ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号