栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Map集合框架(案例)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Map集合框架(案例)

目录

 一、Map集合概述

⬇特点&遍历方式

  ⬇Map接口和Collection接口的不同

   ⬇HashMap与Hashtable之间的区别

二、Map集合的功能概述

 a:添加元素功能

 b:删除元素功能

 c:判断功能

 d:获取元素功能

 ⬇案例:统计字符串各字母出现的次数

​三、泛型的作用

四、集合框架工具类


一、Map集合概述

⬇特点&遍历方式
  • 特点:无序、以键值对的形式存储元素,键不能重复,值可以重复 

  •  遍历方式:keySet   entrySet

源代码:

package com.hemingxiang.Map;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;


public class Demo1 {
	public static void main(String[] args) {
		Map map=new HashMap<>();
		//以键,值对的形式存储
		map.put("a", 1);
		map.put("b", 2);
		map.put("c", 3);
		map.put("d", 4);
		map.put("e", 5);
		System.out.println(map);
		//删除
		Object remove = map.remove("b");
		System.out.println(map+"t删除为第"+remove+"位");
		
		//修改 同样调用put方法
		map.put("c", 32);
		System.out.println(map);
		
		//查询 单个
		System.out.println("查询单个"+map.get("c"));
		
		//查询所有 特点二
		//1.先拿到map集合中所有的key
		Set key = map.keySet();//拿到所有键
		//将key遍历
		for (Object obj : key) {
			System.out.println("键"+obj+"值"+map.get(obj));
		}
		System.out.println("----------------------------------");
		//2.拿到映射关系
		Set> entrySet = map.entrySet();
		for (Entry entry : entrySet) {
			System.out.println("键"+entry.getKey()+"值"+entry.getValue());
		}
		
	}
}

源码运行效果:

 ⬇Map接口和Collection接口的不同
  • Map是双列的(是双列集合的根接口),Collection是单列的(是单列集合的根接口)
  • Map的键唯一,Collection的子体系Set是唯一的
  • Map集合的数据结构值针对键有效,跟值无关;如:TreeMap:键是用二叉树算法,HashMap:键是hash算法, Collection集合的数据结构是针对元素有效

 ⬇HashMap与Hashtable之间的区别
  • HashMap非同步(V put(k key, v value)) 线程不安全

  • Hashtable同步(public synchonized V put(k key, v value)) 线程安全  同步既排队

二、Map集合的功能概述

 a:添加元素功能
  • V put(K key,V value):添加元素。
  • 如果键是第一次存储,就直接存储元素,返回null
  • 如果键不是第一次存储,就用值把以前的值替换掉,返回以前的值

 b:删除元素功能
  • void clear():移除所有的键值对元素
  • V remove(Object key):根据键删除键值对元素,并把值返回

 c:判断功能
  • boolean containsKey(Object key):判断集合是否包含指定的键
  • boolean containsValue(Object value):判断集合是否包含指定的值
  • boolean isEmpty():判断集合是否为空

d:获取元素功能
  • Set> entrySet():获取映射关系
  • V get(Object key):根据键获取值
  • Set keySet():获取集合中所有键的集合
  • Collection values():获取集合中 * int size():返回集合中的键值对的个数所有值的集合

 ⬇案例:统计字符串各字母出现的次数

源代码:

package com.hemingxiang.Map;

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


public class Demo2 {
	public static void main(String[] args) {
		//统计字符串各字母出现的次数
		String str="sjfjlujkpfmjwpkjmslpls";
		
		char[] cs = str.toCharArray();
		//添加一个map容器
		Map map=new HashMap();//如要将字母出现的次
        //数按照26个字母先后顺序排序把HashMap改为TreeMap<>();即可
		for (char c : cs) {
			Integer value=map.get(c);
			if(value==null) {
				map.put(c, 1);
			}
			else {
				map.put(c, value+1);
			}
			Set> entrySet = map.entrySet();
			for (Entry entry : entrySet) {
				System.out.println(entry.getKey()+" : "+entry.getValue());
			}
		}
	}
}

代码运行出来的结果:s:3  j:5  f:2  l:3  u:1  k:2  p:3  m:2  w:1

 细心的朋友一定已经注意到这里提到的调式器吧!是的,这个案例借助到了调式器的帮助,下面看图,更形象看一下怎么用吧樂

 

三、泛型的作用

①提高代码健壮性;不健壮的代码,在运行时才会把错误暴露出来

②将运行期出现的异常转换为编译错误;错误代码,将潜在问题暴露出来,早预防早治疗

想要了解更多去看看这个博主⬇⬇⬇⬇https://blog.csdn.net/s10461/article/details/53941091?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165476955916782350910600%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165476955916782350910600&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-53941091-null-null.142^v11^control,157^v13^control&utm_term=%E6%B3%9B%E5%9E%8B&spm=1018.2226.3001.4187https://blog.csdn.net/s10461/article/details/53941091?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165476955916782350910600%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165476955916782350910600&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-53941091-null-null.142%5Ev11%5Econtrol,157%5Ev13%5Econtrol&utm_term=%E6%B3%9B%E5%9E%8B&spm=1018.2226.3001.4187

 四、集合框架工具类

 Collections ---->aslist排序;toArray集合转数组

看源码:

package com.hemingxiang.Map;

import java.util.Arrays;
import java.util.List;


public class Demo4 {
	public static void main(String[] args) {
		//字符串数组 
		String[] arr = {"a","b","c","d"};
		List ls = Arrays.asList(arr);//排序
		System.out.println(ls);
		//数组转集合
		//ls.add("e");
		//集合转数组
		Object[] array = ls.toArray();
		System.out.println(ls.size());
		
	}
}

输出结果:

(先看一个错误❗❗)

 Arrays---->sort排序;toString

看源码:

package com.hemingxiang.Map;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;


public class Demo5 {
	public static void main(String[] args) {
		List list = new ArrayList<>();
		list.add(new Person("b", 16));
		list.add(new Person("c", 18));
		list.add(new Person("a", 17));
		list.add(new Person("d", 15));
		
		
		//Collections.sort(list);
		Collections.sort(list, (x,y)->x.getName().compareTo(y.getName()));
		System.out.println(list);
		
		Integer[] arr= {3,6,9,5,4,8};
		Arrays.sort(arr);//升序
		System.out.println("升序"+Arrays.toString(arr));
		Arrays.sort(arr, (x,y) -> y - x);//降序
		System.out.println("降序"+Arrays.toString(arr));
	}
}
class Person {
	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;
	}
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public Person() {
		super();
	}
	
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
    
    //重写Comparable
	
	
	
}

 使上方字母按顺序倒序输出效果图:

 获取实体类的数值,错误演示:

也可以不同实现Comparable接口⬇⬇ 

 

 升降序:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/964329.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号