JAVA学习第四十课(常用对象API)- Map集合练习

一、LinkedHashMap集合

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

public class Main
{
	public static void main(String[] args) {
		HashMap<Integer, String> hm = new LinkedHashMap<Integer,String>();//保证有序
		hm.put(1, "a");
		hm.put(5, "c");
		hm.put(3, "e");
		hm.put(4, "s");
		Iterator<Map.Entry<Integer,String>> It = hm.entrySet().iterator();
		while(It.hasNext()){
			Map.Entry<Integer, String> meEntry = It.next();
			Integer key = meEntry.getKey();
			String value = meEntry.getValue();
			System.out.println("key - value :"+key+"-"+value);
		}
	}
}

练习:

记录字母出现次数

import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

/*"as6&dg+dfg-badf453sasxa" 记录字符串中字母出现的次数 a(4)b(1) d(4)...
 *
 * 思路:
 * 很容易发现,字母和次数之间存在对应关系,而且需要存储
 * 能存储映射关系的集合有数组和Map
 * 判断关系中的一方是否是有序编号?否
 * 需要使用Map集合
 * 判断具备唯一性的一方具备着顺序如a,b,c。。。
 * 所以使用TreeMap
 * */
public class Main
{
	public static void main(String[] args) {
		/*
		 * 1.将字符串变成单个字母的字符数组
		 * 2.用每个字母当中键去查Map集合的表
		 * 3.判断字母是否存在,不存在按      字母<key> - time<value>的方式存储 (初始time = 1)
		 * 存在,按      字母<key> - ++time<value>的方式存储
		 * */

		String str = "asdgdfgbadfsasxa";
		String result = Get(str);
		System.out.println(result);
	}
	public static String Get(String str){

		char[] ch = str.toCharArray();
		Map<Character,Integer> map = new TreeMap<Character,Integer>();
		for (int i = 0; i < ch.length; i++) {
			if(!('a'<=ch[i]&&ch[i]<='z' || 'A'<=ch[i]&&ch[i]<='Z'))
				continue;
			Integer value =  map.get(ch[i]); //将字母作为键查表
			int time = 1;
			if(value!=null)
				time = value + 1;
			map.put(ch[i], time);
		}
		return Map_To_String(map);
	}
	private static String Map_To_String(Map map)
	{
		StringBuilder str = new StringBuilder();
		Iterator<Character> it = map.keySet().iterator();
		while(it.hasNext()){
			Character key = it.next();
			Integer value = (Integer) map.get(key);
			str.append(key+"("+value+")");
		}
		return str.toString();
	}
}

二、Map集合查表法

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
import javax.management.RuntimeErrorException;

public class Main
{
	public static void main(String[] args) {
		/*在查表法中Map集合的应用较多*/
		int num;
		Scanner in = new Scanner(System.in);
		num = in.nextInt();
		String week = Get_Week(num-1);
		System.out.println(week);
		System.out.println(Get_Week_English(week));
		in.close();
	}
	public static String Get_Week(int num){
		if (num>7 || num <0)
			throw new RuntimeException("输入错误");

		String[] week = {"星期一","星期二","星期三","星期四","星期五","星期六","星期天"};
		return week[num];
	}
	public static String Get_Week_English(String week){
		Map<String, String> map = new HashMap<String, String>();
		if(!(week.equals("星期一")||week.equals("星期二")||week.equals("星期三")
				||week.equals("星期四")||week.equals("星期五")||week.equals("星期六")||week.equals("星期天")))
				{
			throw new RuntimeException("输入错误的星期");
				}
		map.put("星期一", "Monday");//特别注意一点,map.put("",Set<Integer>);集合中也可以放集合
		map.put("星期二", "Tus");
		map.put("星期三", "Wes");
		map.put("星期四", "Thu");
		map.put("星期五", "Fri");
		map.put("星期六", "Sta");
		map.put("星期天", "Sun");
		return map.get(week);
	}
}
时间: 2025-01-02 16:13:10

JAVA学习第四十课(常用对象API)- Map集合练习的相关文章

JAVA学习第三十六课(常用对象API)- 集合框架(四)— Set集合:HashSet集合演示

随着Java学习的深入,感觉大一时搞了一年的ACM,简直是明智之举,Java里很多数据结构.算法类的东西,理解起来就轻松多了 Set集合下有两大子类开发常用 HashSet集合 .TreeSet集合 Set集合的元素是不重复且无序 一.HashSet集合 API文档解释:此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持.它不保证 set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用null 元素. 此类为基本操作提供了稳定性能,注意,此实现不是同步的. 由上可

JAVA学习第三十四课(常用对象API)- 集合框架(二)—List集合及其子类特点

整个集合框架中最常用的就是List(列表)和Set(集) 一.List集合 && Set的特点 Collection的子接口: 1.List:有序(存入和取出的顺序一致),元素都有索引且可以重复    API文档解释:有序的 collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素. 2.Set:元素不能重复,无序,有可能会有序    API文档解释:一个不包含重复元素的 coll

JAVA学习第三十九课(常用对象API)- 集合框架(七)— Map集合及其子类对象

一.Map集合常见子类 HashTable:内部结构是哈希表,同步,此实现提供所有可选的映射操作,不允许使用 null 值和 null 键 (HashTable下有子类Properties,使用频率非常高,用来存储键值对型的配置文件信息和IO技术相结合) HashMap:内部结构是哈希表,不同步,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键. TreeMap:内部结构是二叉树,不同步,可以对Map集合中的键进行排序. 二.HashMap演示 import java.ut

JAVA学习第三十八课(常用对象API)- 集合框架(六)— Map集合及其常用方法

一.Map集合特点 Map集合(双列集合)一次添加一对元素,Collection集合(单列集合)一次添加一个元素 接口 Map<K,V>,实际上存储的是键值对 特点: 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 也就是说Map中必须保证键的唯一性 二.常用方法 1.添加:value = put(key,value);返回前一个和key相关联的值,如果没有返回null 2.删除:void clear();把Map中的所有映射关系清除 value remove(ke

JAVA学习第三十七课(常用对象API)- 集合框架(五)— Set集合:TreeSet集合

一.LinkedHashSet集合 HashSet下有子类LinkedHashSet API文档关于LinkedHashSet的解释: 具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现.此实现与 HashSet 的不同之外在于,后者维护着一个运行于所有条目的双重链接列表.此链接列表定义了迭代顺序,即按照将元素插入到 set 中的顺序(插入顺序)进行迭代.注意,插入顺序不 受在 set 中重新插入的 元素的影响.(如果在 s.contains(e) 返回 true 后立即调用 s.add(

JAVA学习第四十四课 — 集合框架工具类(二)

Collections操控集合的工具类,Arrays操控数组的工具类 Arrays中方法大多是重载 重点掌握asList();将数组转为集合 static <T> List<T> asList(T... a) 返回一个受指定数组支持的固定大小的列表. import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { String[]

JAVA学习第三十五课(常用对象API)- 集合框架(三)—Vector、LinkedList、ArrayList集合演示

集合框架构成图 摘自百度图片 一.Vector集合 演示 虽然Vector已经不常用了,但是还是要了解一下其中的方法 import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; import java.util.Vector

JAVA学习第四十五课 — 其他对象API(一)

一.System类 1. static long currentTimeMillis() 返回以毫秒为单位的当前时间. 实际上:当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量). long time = 1414069291407l;//long型 后面加l System.out.println(time); 2. static void exit(int status)终止当前正在运行的 Java 虚拟机. static void gc()运行垃圾回收器

JAVA学习第四十五课 — 其它对象API(一)System、Runtime、Math类

一.System类 1. static long currentTimeMillis() 返回以毫秒为单位的当前时间. 实际上:当前时间与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位測量). long time = 1414069291407l;//long型 后面加l System.out.println(time); 2. static void exit(int status)终止当前正在执行的 Java 虚拟机. static void gc()执行垃圾回收器