MAP散列表

map

  • java.util.Map 查找表接口
  • Map体现的样子是一个多行两列的表格,其中左列称为key,右列称为value。所以也叫做键值对
  • Map总是根据key来获取对应的value,所以将查询条件作为key,将查找的内容作为value保存,以便后期存取。
  • 常用实现类:
    • java.util.HashMap 散列表/哈希表。散列表是当今查询速度最快的数据结构,不受数据量影响查询速度。
    • java.util.TreeMap 二叉树实现的Map
  • V put(K k,V v)将给定的key-Value对保存到Map中

注意:Map有一个要求:Key不允许重复(equals比较),若使用Map中已存在的Key存放一个Value,则是替换Value操作,那么put方法的返回值就是被替换的Value。若给定的Key当前Map中不存在,则返回值为null

API

  • V put(K key, V value);存入键值对,返回值类型是value的类型。若存入的数据key表中没有,返回null,若key已存在,则用新的value值替换原来的值,并把原来的值返回。
  • V get(Object key);若表中存在key,则返回key对应的value值,不存在则返回null
  • V remove(Object key);若key值存在,则移除这个键值对,若不存在返回null
  • boolean containsKey(Object key);判断是否存在对应的key
  • boolean containsValue(Object value);判断是否存在对应的value
  • map.clear();
  • map.isEmpty();
  • map.size();
  • map.equals();
  • boolean replace(K key, V oldValue, V newValue);若key和oldValue在表中都存在并且正确,则替换value为新值,返回true,否则不做替换,返回false
  • V replace(K key, V value);若key存在,替换其值为新值,返回原值,否则返回false
  • Set keySet();返回一个存放所有key的Set类型集合,其泛型为key的泛型。
  • Collection values();返回一个存放所有value值的Collection类型的集合,其泛型为value的泛型
  • Set<Map.Entry<K, V>> entrySet();返回一个Set类型集合,它里面的元素是Entry<String,Integer>。Entry里的每个元素是一个键值对,所以它有两个泛型。
    Entry常用 的方法:
    • K getKey();获取键值对的key
    • V getValue();获取键值对的value

	public static void main(String[] args) {
		Map<String,Integer> map = new HashMap<>();
		map.put("语文", 99);
		map.put("数学", 98);
		System.out.println(map.put("英语", 97));
		System.out.println(map.put("数学", 98));
		System.out.println(map.get("语文"));
		System.out.println(map.remove("英语"));
		System.out.println(map);

		map.containsKey("yuwen");
		System.out.println(map.replace("语文", 94, 97));
		System.out.println(map);
		
		Set<String> keyset = map.keySet();
		System.out.println(keyset);
		Collection<Integer> valueset = map.values();
		Set<Entry<String,Integer>> entryset =map.entrySet();
		map.clear();
		map.isEmpty();
		map.size();
	}

Map的遍历

  • Map支持三种遍历方式:
    1. 遍历所有的Key:Set keySet();将当前map中所有的key以一个set集合的形式返回,集合的泛型与key相同
    2. 遍历每一组键值对: Set<Map.Entry<K, V>> entrySet()
    3. 遍历所有的value(不常用) Collection values();注意方法明和返回值与前两个有所不同
		//遍历所有key
		Set<Character> keyset = map.keySet();
		for(Character c:keyset) {
			Integer value = map.get(c);
			System.out.println(c+"="+value);
		}
		//遍历所有键值对
		Set<Entry<Character ,Integer>> entryset = map.entrySet();
		for(Entry<Character,Integer> entry:entryset) {
			Character key = entry.getKey();
			Integer value = entry.getValue();
			System.out.println(key+"="+value);
		}
		//遍历所有value
		Collection<Integer> values = map.values();
		for(Integer i:values) {
			System.out.println(i);
		}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值