Map集合 --- hashmap hashtable

集合是容器,不同的集合具有不同的特性
容器里面存放的都是包装类(对象),基本数据类型也要转化为包装类
Set集合 – 自动去重 add
set遍历只能使用迭代器
List集合 – 不会自动排序 add
Map集合 – 存放数据 (key:value(键值对)) put

 * List
 * 线程安全:使用 Vector         
 * 非线程安全 : ArrayList   linkedList
 * 
 * 
 * Map  
 * 线程安全: hashtable   
 * 线程不安全:hsahmap
 * 

1. Map

map是接口,不能被实例化,需要实例化它的子类(子类是父类的扩充,继承了父类的所有方法,可以通过子类调用父类的方法)
map的重要子类有:Hashmap(不自动排序) LinkedHashmap(自动排序) Treemap

  1. Hashmap
package map;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Map_HashMap {

	public static void main(String[] args) {
		Map map = new HashMap();
		map.put(1, 2);
		//map.put(1, 3);
		map.put(2, 3);
		
		//通过key获取value (key不能重复,否则前面的key会被后面覆盖)
		//System.out.println(map.get(1));
		
		
		//遍历
		//方法1 :获取所有的键,不会重复  set 去重
		Set keyset = map.keySet();
		Iterator iterator = keyset.iterator();
		for(; iterator.hasNext();) {
			Object key = iterator.next();
			System.out.println(key + " - " +map.get(key));
		}
		
		DieDai(map);
		
		//方法3 : 枚举器   hashtable()   不重要
		System.out.println("=========常用方法==============");
		System.out.println("==========1=======================");
		//介绍hashmap中常用的方法
		//1.判断map中是否包含键:2
		boolean containsKey = map.containsKey(2);
		System.out.println(containsKey);
		
		System.out.println("==========2========================");
		//2.判断map中是否包含值:2
		boolean containsValue = map.containsValue(2);
		System.out.println(containsValue);
		
		System.out.println("==========3========================");
		//3.判断当前集合中是否包含键:3的键值对,找到了就从
		//集合中取出,找不到就将该键值对插入集合并且拿出键为3的value
		Object o = map.getOrDefault(3, "张三");
		System.out.println(o);
		
		System.out.println("==========4========================");
		//4判断map是否为空
		//map.clear();
		System.out.println(map.isEmpty()); 
		
		System.out.println("==========5========================");
		//5.合并两个map
		HashMap map2 = new HashMap();
		map2.put("3", "李四");
		map2.put(false, 1);
		map.putAll(map2);
		//5.2用Entry遍历
		DieDai(map);
		
		System.out.println("==========6========================");
		//6.删除,使用key来删除
		map.remove(false);
		
		System.out.println("==========7========================");
		//7.替代
		map.replace("3", "王五");
		DieDai(map);
		
		System.out.println("==========8========================");
		//8.size() 获取容器中的数据量,容器中存放了多少条数据
		System.out.println(map.size());
		
		System.out.println("==========9========================");
		//9.
		Collection values = map.values();
		Iterator iterator3 = values.iterator();
		while(iterator3.hasNext()) {
			
		}
	}

	//抽取打印的迭代方法
	private static void DieDai(Map map) {
		Set entrySet2 = map.entrySet();
		Iterator iterator3 = entrySet2.iterator();
		for(;iterator3.hasNext();) {
			Entry e = (Entry) iterator3.next();
			System.out.println(e.getKey()+ " - " +e.getValue());
		}
	}
}

  1. Hashtable
package map;

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
/**
 * Hashtable  
 * Hashtable与HashMap之间的区别: 多了一个遍历的方式,枚举器
 * @author Administrator
 *
 */
public class Map_Hashtable {

public static void main(String[] args) {
	Hashtable map = new Hashtable();
	map.put(1, 2);
	
	//1Hashtable遍历
	//1.1.获取key  通过key找value
	Set keySet = map.keySet();
	Iterator iterator = keySet.iterator();
	while(iterator.hasNext()) {
		Object key = iterator.next();
		System.out.println(key);
		System.out.println(map.get(key));
	}
	
	System.out.println("=======================");
	//1.2.获取entry对象    entry封装key+value
	Set entrySet = map.keySet();
	Iterator iterator2 = entrySet.iterator();
	while(iterator2.hasNext()) {
		Entry e = (Entry) iterator2.next();
		System.out.println(e.getKey());
		System.out.println(e.getValue());
	}
	System.out.println("=======================");

	//1.3.获取枚举器elements
	Enumeration elements = map.elements();  //获取一个枚举器
	while(elements.hasMoreElements()) {
		Object key = elements.nextElement();  
		System.out.println(key);
		System.out.println(map.get(key));
	}
}
}

区别需要线程安全的时候,使用Hashtable ,不需要线程安全的使用Hashmap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值