package 集合框架5.hashmap.treemap; import java.util.HashMap; /** * HashMap集合: * map集合最大特点为双列集合,键值对存在对应关系(映射); * HashMap数据结构是哈希表,因此需要覆写hashCode()、 * equals()方法;保证key的唯一性,value是可以重复的; * * 例:写一个输入日期,返回备注信息的程序; * map在有映射关系时优先选择; * 在查表法中常见 * */ public class HashMapDemo { public static void main(String[] args) { String str = getInformation("17年5月3号"); System.out.println(str); } private static String getInformation(String day) { HashMap<String, String> map1 = new HashMap<String,String>(); map1.put("17年5月1号", "参加世界和平酒会"); map1.put("17年5月2号", "网络安全研讨会"); map1.put("17年5月3号", "陪家人"); map1.put("17年5月4号", "去夏威夷晒太阳"); map1.put("17年5月5号", "返回北京"); map1.put("17年5月6号", "开始工作"); return map1.get(day); } }
package 集合框架5.hashmap.treemap; import java.util.Iterator; import java.util.TreeMap; /** * TreeMap: * 数据结构:二叉树;所以要实现implements Comparator接口, * 实现比较功能,从而进行二叉树排序;java中很多类都实现了这个接口或者Comparable接口 * Comparable:给对象类添加比较功能 * Comparator:给集合添加比较器 * * 例:"asdfA#AjkC Cha wguuivd-skd+ * jhdf"找出这个字符串中每个字母出现的次数(包含大小写,不包含空格特殊字符) * 思路: * 1、要对字符串中每个字符进行操作,先将字符串转成字符数组; * 2、返回数值是键值对;a(5) 所以联想到使用map集合,而且a,b,c,d是有顺序的所以用TreeMap集合更好 * 3、创建一个TreeMap集合,遍历字符数组,同时将结果存入TreeMap集合; * 4、根据要求只输出字母的出现次数,所以chs[i]<='z'&&chs[i]>='a' || chs[i]<='Z'&&chs[i]>='A' * 5、存入时需要判断字符是否存在集合中并添加计数器如果存在value+1;因为map中key要唯一,所以用来存字母; * * */ public class TreeMapDemo { public static void main(String[] args) { String str1 = "asdfA#AAjkC Cdha wguuivd-skd+ * jhdf"; char[]chs = str1.toCharArray(); TreeMap<Character, Integer> map = new TreeMap<Character,Integer>(); for (int i = 0; i < chs.length; i++) { if(!(chs[i]<='z'&&chs[i]>='a' || chs[i]<='Z'&&chs[i]>='A')){ continue; } int value=1; if(map.containsKey(chs[i])==false){ map.put(chs[i], value); }else{ value=map.get(chs[i]); map.put(chs[i], value+1); } } System.out.println(mapToString(map)); } private static StringBuilder mapToString(TreeMap<Character, Integer> map) { StringBuilder sb1 = new StringBuilder(); for(Iterator<Character> it1 = map.keySet().iterator();it1.hasNext();){ Character key = it1.next(); Integer value = map.get(key); sb1.append(key+"("+value+")"); } return sb1; } }