java===map集合

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;
    }

}
原文地址:https://www.cnblogs.com/wangyinxu/p/6738022.html