Map接口的实现类

hashMap

特点

无序、key唯一、value允许重复、key和value允许为null

方法

添加元素:put(K,V) 

删除元素:1、remove(key)  通过key来  删除整个键值对;2、remove(key,value)  通过key+value   删除整个键值对

获取元素:1、get(key)   通过key,获取value ;2、keySet()  Set类型   获取所有的key;3、values()  Collection类型   获取所有的values  

替换元素: replace(key, NewValue)  通过key,替换value值

键值对存在与否 :1、 containsKey(key)是否存在某个key ; 2、.containsValue(value)是否存在某个value

hashMap存储方式

以 node<K,V>[ ] 数组 和 链表的形式存储,通过key的哈希值 ,来计算数组中存储的下标位置(index)如下图:

若当index重复是,以单向链表的形式存储元素如下图:

hashmap的相关应用 :

1、求字符串重复元素的个数,示例代码如下


import java.util.HashMap;

public class Test03 {

//	hashMap 求字符串重复元素的个数
	public static void main(String[] args) {		
		String string= "utzsexdrcfvgybhunjrxdcfvgbhesxdrcfvgybdrcfvtgbhn";		
		System.out.println(count(string));
	}
	
	public static HashMap<String, Integer> count(String str) {	
        //创建一个hashmap对象	
		HashMap<String, Integer> result = new HashMap<String, Integer>();		
		for (int i = 0; i < str.length(); i++) {
			//将得到的字符作为key存储到hashmap中
			String  key = String.valueOf(str.charAt(i));
            //判断是否存在重复的key,有则+1
			if (result.containsKey(key)) {
				result.put(key, result.get(key)+1);
			}else {
				result.put(key, 1);
			}	
		}
		return result;
	}
}

输出结果如下:

2、当key相同 ,value值相加  ,示例代码如下

import java.util.HashMap;
import java.util.Scanner;

public class Test04 {

	public static void main(String[] args) {
		//key相同 ,,值相加		
		HashMap<String, Integer> result = new HashMap<String, Integer>();
		
		try (Scanner sc = new Scanner(System.in)) {
			for (int i = 0; i < 5; i++) {
				String key = sc.next();
				int value = sc.nextInt();
				
				//方式1
				if (result.containsKey(key)) {
					result.put(key, result.get(key)+value);
				}else {
					result.put(key, value);
				}				
				
				//方式2 
				result.put(key, result.getOrDefault(key, 0)+value);				
			}
			System.out.println(result);
		}
	}
}

输出结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值