A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小刀葛小伦 黑马粉丝团   /  2019-8-15 11:14  /  1104 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、HashMap中Value可以相同,但是键不可以相同
当插入HashMap的key相同时,会覆盖原有的Value,且返回原Value值,看下面的程序:
[Java] 纯文本查看 复制代码
public class Test {
 
	public static void main(String[] args) {
		
		HashMap<String,Integer> map = new HashMap<String,Integer>();
 
		//出入两个Value相同的值,没有问题
		map.put("egg", 1);
		map.put("niu", 1);
		
		//插入key相同的值,看返回结果
		int egg = (Integer) map.put("egg", 3);
		
		System.out.println(egg);   //输出1
		System.out.println(map.get("egg"));   //输出3,将原值1覆盖
		System.out.println(map.get("niu"));   //输出1
	}
}

相同的键会被覆盖,且返回原值。


二、HashMap按值排序
给定一个数组,求出每个数据出现的次数并按照次数的由大到小排列出来。我们选用HashMap来做,key存储数组元素,值存储出现的次数,最后用Collections的sort方法对HashMap的值进行排序。代码如下:
[Java] 纯文本查看 复制代码
public class Test {
 
	public static void main(String[] args) {
 
		int data[] = { 2, 5, 2, 3, 5, 2, 3, 5, 2, 3, 5, 2, 3, 5, 2,
				7, 8, 8, 7, 8, 7, 9, 0 };
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();
		for (int i : data) {
			if (map.containsKey(i)) {//判断HashMap里是否存在
				map.put(i, map.get(i) + 1);//已存在,值+1
			} else {
				map.put(i, 1);//不存在,新增
			}
		}
		//map按值排序
		List<Map.Entry<Integer, Integer>> list = new ArrayList<Map.Entry<Integer, Integer>>(
				map.entrySet());
		Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
			public int compare(Map.Entry<Integer, Integer> o1,
					Map.Entry<Integer, Integer> o2) {
				return (o2.getValue() - o1.getValue());
			}
		});
		for (Map.Entry<Integer, Integer> m : list) {
			System.out.println(m.getKey() + "-" + m.getValue());
		}
	}
 
}

输出:

2-6
5-5
3-4
8-3
7-3
9-1
0-1


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马