常用的Map集合

常用的Map集合Map集合Map集合常用方法增加删除判断获取Map集合中TreeSet的应用Map集合中HashSet的应用Map集合常用方法Map集合和Collection集合的区别Map集合是有Key和Value的,Collection集合是只有Value。Collection集合底层也是有Key和Value,只是隐藏起来。1.增加put(Kkey,Vvalue)2.删除…

大家好,又见面了,我是你们的朋友全栈君。

Map集合常用方法

Map集合和Collection集合的区别

Map集合是有Key和Value的,Collection集合是只有Value。

Collection集合底层也是有Key和Value,只是隐藏起来。

1.增加 put (K key, V value)
2.删除 clear() 删除这个集合的所有值 remove(Object key) 根据键删除这一类
3.判断 containsKey(Object key) containsValue(Object value) isEmpty()
4.获取 get(Object key) size() values() entrySet() keySet()

增加

Map的put方法

  • 1.添加集合元素的同时,它可以编辑原有的元素
  • 如果说集合中没有key对应的value,那么就往集合中添加元素
  • 如果说集合对应的key有value值,则代表替换原有的值
  • 2.返回替换前key对应的value值
    在这里插入图片描述

删除

clear() 删除这个集合的所有值

在这里插入图片描述 remove(Object key) 根据键删除这一类

在这里插入图片描述

判断

containsKey(Object key) 这里就举这一个例子
在这里插入图片描述

获取

KeySet():
将Map中所有的键存入到set集合中。因为set具备迭代器。所有可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。 keySet():迭代后只能通过get()取key

entrySet():

Set<Map.Entry<K,V>> entrySet() //返回此映射中包含的映射关系的 Set 视图。 Map.Entry表示映射关系。entrySet():迭代后可以e.getKey(),e.getValue()取key和value。返回的是Entry接口 。

在这里插入图片描述

Map集合中TreeSet的应用

底层是二叉树数据结构,线程不同步,可以用于给Map集合中的键进行排序

package com.zking.Map;

import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

/** * 1、将学生作为键,地址作为值进行存储,名字年龄相同则被认定为一个人,最后输出 * A.建立一个student类,实例化作为key添加到map集合中 * B.对学生进行判重 * 2、最后按年龄进行排序 * 3、需求改变、按姓名进行排序 * @author huguiyun * */
public class TreeMapDemo { 
   
	public static void main(String[] args) { 
   
// Map<Student, String > map = new HashMap<>();//判重
// Map<Student, String > map = new TreeMap<>();//判重需要实现Comparable方法,排序
		Map<Student, String > map = new TreeMap<>(new StuComp());//比较器排序

		map.put(new Student("liuting", 18), "beijing");
		map.put(new Student("wangwang", 43), "xingjiang");
		map.put(new Student("goudan", 28), "dongjing");
		map.put(new Student("xuyangyang", 38), "hulunbeier");
		map.put(new Student("liuting", 18), "beijing");
		map.put(new Student("liutingting", 18), "beijing");
		
		
		System.out.println(map.size());
		Set<Entry<Student, String>> entryset = map.entrySet();
		for(Entry<Student, String> entry:entryset) { 
   
			System.out.println(entry.getKey()+" === "+entry.getValue());
		}
	}
}
class Student implements Comparable<Student>{ 
   //让它具有比较性
	private String name;
	private int age;
	public String getName() { 
   
		return name;
	}
	public void setName(String name) { 
   
		this.name = name;
	}
	public int getAge() { 
   
		return age;
	}
	public void setAge(int age) { 
   
		this.age = age;
	}
	@Override
	public String toString() { 
   
		return "Student [name=" + name + ", age=" + age + "]";
	}
	public Student(String name, int age) { 
   
		super();
		this.name = name;
		this.age = age;
	}
	public Student() { 
   
		super();
	}
	
	//乘以39是为了增大他们的哈希,防止他们的哈希值相等
	@Override
	public int hashCode() { 
   
		return this.getName().hashCode()+this.getAge()*39;
	}
	@Override
	public boolean equals(Object obj) { 
   
		Student stu = (Student)obj;
		return this.getAge() ==stu.getAge()&&this.getName().equals(stu.getName()) ;
	}
	@Override
	public int compareTo(Student o) { 
   //一定要判断主要条件和次要条件
		int num = this.getAge() - o.getAge();
		if(num==0) { 
   
			this.getName().compareTo(o.getName());
		}
		return num;
	}
}


class StuComp implements Comparator<Student>{ 
   //比较器排序

	@Override
	public int compare(Student o1, Student o2) { 
   
		int num = o1.getName().compareTo(o2.getName());
		if(num==0) { 
   
			return o1.getAge() - o2.getAge();
		}
		return num;
	}
	
}

Map集合中HashSet的应用

统计字符串中字符出现次数

package com.zking.Map;

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

/** * * map集合中的泛型要使用包装类,或者是引用数据类型 * * 统计字符串中出现的次数 * sdkfgkdfadasdfasd * a(2)c(5) * * 思考 * 统计,排序 * * 统计功能 * 1.将字符串转为字符数组,将这个字符串中的字符当作map集合中的key, * 将出现的次数作为value值 * * 2.当字符第一次出现的时候,那么用它在集合中进行寻找,返回值必然是null, * 之后将该字符对应的值改为1 * * 3.如果说该字符不是第一次出现,该字符对应的值不为null,然后应该+1 * * @author huguiyun * */
public class HashMapDemo { 
   
	public static void main(String[] args) { 
   
		String str = "ksdflaksdfasdrtwrtwerxvsdfghflaihijfaidfai";
		str = cishu(str);
		System.out.println(str);
	}
	public static String cishu(String str) { 
   
		char[] chararray = str.toCharArray();
		Map<Character, Integer> map = new TreeMap<>();
		for(char c : chararray) { 
   
			Integer value = map.get(c);
			if(value==null) { 
   
				map.put(c, 1);
			}
			else { 
   
				map.put(c, ++value);
			}
		}
// StringBuffer跟string string 会创建新的空间
		StringBuffer sb = new StringBuffer();
		for(Map.Entry<Character, Integer> entry:map.entrySet()) { 
   
			sb.append(entry.getKey()+"("+entry.getValue()+")");
		}
		return sb.toString();
	}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139378.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月29日 下午10:16
下一篇 2022年5月29日 下午10:16


相关推荐

  • 算数平均数、中位数、众数和几何平均数[通俗易懂]

    算数平均数、中位数、众数和几何平均数[通俗易懂]文章目录算数平均数、中位数、众数和几何平均数算数平均数、中位数、众数和几何平均数统计数据时经常用到的几种数的比较:算数平均数中位数众数几何平均数英文名ArithmeticmeanMedianModeGeometricMean别称均值中值定义n个变量的和除以n。中位数是按顺序排列的一组数据中居于中间位置的数,即在这组数据中,有一半的…

    2025年12月15日
    8
  • 服务自启动设置_服务器设置启动项

    服务自启动设置_服务器设置启动项一、linux下的服务分类RPM包默认安装的服务这些服务是通过RPM包安装的,可以被服务管理命令识别。又分为两种子分类:1)独立的服务:就是独立启动的意思,这类型的服务可以自行启动,而不

    2022年8月3日
    7
  • 微信小程序个人心得「建议收藏」

    微信小程序个人心得「建议收藏」昨天看了一下微信小程序官方文档,总结一下自己学习的个人心得.首先从官方文档给的框架说起,微信小程序官方文档给出了app.js,app.json,app.wxss.先从这三个文件说起.app.js这个文件是整个小程序的入口文件,开发者的逻辑代码在这里面实现,同时在这个文件夹里面可以定义全局变量.app.json这个文件可以对小程序进行全局配置,决定页面文件的路径,窗口表现,设置网络超时时间

    2025年12月13日
    4
  • 《manus》使用教程

    《manus》使用教程

    2026年3月15日
    2
  • DSP28335数据类型

    DSP28335数据类型最近在用 DSP28335 时 发现数据类型与 ARM 体系的数据类型有些差异 做了以下测试 来确定 DSP28335 上数据类型的大小 nbsp nbsp nbsp nbsp nbsp 28335 单位中长度为是 16bit nbsp nbsp count sizeof char nbsp nbsp count sizeof int nbsp nbsp count nbsp sizeof double nbsp count nbsp sizeof long nbsp nbsp c

    2026年3月26日
    2
  • python全国计算机二级报名_python有证书考吗

    python全国计算机二级报名_python有证书考吗第一次参加全国计算机等级考试的考生对于网上报名的流程,对全国计算机考试流程中某些环节并不清楚,小编今天就整理下全国计算机等级考试流程及详细说明,提供网上报名流程示意图,解决大家在全国计算机等级考试报名过程中的疑问。(如有出入,请以官方信息为准)考生需登录各地计算机等级考试官方报名网站,进入“全国计算机等级考试报名系统”进行注册登录。(一)注册账号和登录一、注册ETEST通行证1.考生首次登录系…

    2025年8月28日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号