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版发布之前,这就是各种基于哈希
相关文档:
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 ......
public class MultiThread {
public static void main(String[] args) {
ProductStack box = new ProductStack("box");
Producer p1 = new Producer(box, "p1");
Producer p2 = new Producer(box, "p2");
Producer p3 = new Producer(box, "p3");
&nb ......
刚从网上看到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 ......
package cn.vicky.reg;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class MyEclipseReg {
// ///////////////////////////////////////////////////////////
// 运行该文件 输入用户名 点击回车即可生成 MyEclipse 6.0 和 7.0 通用户注册码
// ///// ......
1.最简单的图形,一个消息框
import javax.swing.JOptionPane;
//表明程序使用javax.swing包的JOptionPane类
public class Dialog1{
public static void main(String[] args) {
// TODO Auto-generated method stub
&n ......