HashMap与Hashtable

Map接口

如果要操作一对对象,则要使用Map接口,类似于以下的一种情况:

  • 张三 123456
  • 李四 234567

里面的内容都按照key→value的形式保存,也称为二元偶对象。

HashMap

HashMap是Map的子类,此类继承了AbstractMap类,同时可以被克隆,可以被序列化下来。

向集合中增加内容:

public static void main(String[] args){
	Map<Integer, String> map = new HashMap<>();
	map.put(1, "张三a");
	map.put(1, "张三b"); //新的内容替换掉旧的内容
	map.put(2, "李四");
	map.put(3, "王五");
	String val2 = map.get(1);
	String val1 = map.get(6);
	System.out.println(val);
}

结果为:
结果
以上的操作是 Map 接口在开发中最基本的操作过程,根据指定的 key 找到内容,如果没有找到,则返回 null,找到了则返回具体的内容。

得到全部的key或value:

public static void main(String[] args) {
	Map<Integer, String> map = new HashMap<Integer, String>();
	map.put(1, "张三A");
	map.put(2, "李四");
	map.put(3, "王五");
	Set<Integer> set = map.keySet(); // 得到全部的key
	Collection<String> value = map.values(); // 得到全部的value
	Iterator<Integer> iter1 = set.iterator();
	Iterator<String> iter2 = value.iterator();
	System.out.print("全部的key:");
	while (iter1.hasNext()) {
		System.out.print(iter1.next() + "、");
	}
	System.out.print("\n全部的value:");
	while (iter2.hasNext()) {
		System.out.print(iter2.next() + "、");
	}
}

结果为:
结果2
HashMap是属于无序存放的。

Hashtable

Hashtable 是一个最早的 key→value 的操作类,本身是在 JDK 1.0 的时候推出的。其基本操作与 HashMap 是类似的。

public static void main(String[] args) {
	Map<String, Integer> numbers = new Hashtable<String, Integer>();
	numbers.put("one", 1);
	numbers.put("two", 2);
	numbers.put("three", 3);
	Integer n = numbers.get("two");
	if (n != null) {
		System.out.println("two = " + n);
	}
}

操作的时候,可以发现与 HashMap 基本上没有什么区别,而且本身都是以 Map 为操作标准的,所以操作的结果形式都一样。但是 Hashtable 中是不能向集合中插入 null 值的。

HashMap与Hashtable的区别

No.区别点HashMapHashtable
1推出时间JDK1.2之后推出,新的操作类JDK1.0时推出,旧的操作类
2性能异步处理,性能较高同步处理,性能较低
3null允许设置为null不允许设置,否则将出现空指向异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值