java容器---Map扩展

Map集合的扩展:

例子:一个公司类,包括人力资源部门和技术部门。每个部门包括姓名和年龄
     要求存入到map集合中。
     步骤:
     利用嵌套的Map集合
     第一个map集合存储公司部门和HashMap<String,String>
     HashMap<String,String> 中存储对应的部门人姓名和年龄
    Map<String,HashMap<String,Integer>> company = Map<String,HashMap<String,String>>
    HashMap<String>

import java.util.*;
public class MapDemo2{
	public static void main(String []args){
		Map<String,HashMap<String,Integer>> company = new HashMap<String,HashMap<String,Integer>>();
		HashMap<String,Integer> renli = new HashMap<String,Integer>();
		HashMap<String,Integer> jishu = new HashMap<String,Integer>();
		company.put("renli",renli);
		company.put("jishu",jishu);
		
		renli.put("liu",18);
		renli.put("li",19);
		
		jishu.put("xu",18);
		jishu.put("wang",19);
		Set<String> keySet = company.keySet();
		Iterator<String> it = keySet.iterator();
		while(it.hasNext()){
			String bumen = it.next();
			System.out.println("公司部门:"+bumen);
			HashMap<String,Integer> hs = company.get(bumen);
			getInfo(hs);	
		}
		
	}
	public static void getInfo(HashMap<String,Integer> hashMap){
		Set<Map.Entry<String,Integer>> entrySet = hashMap.entrySet();
		Iterator<Map.Entry<String,Integer>> it = entrySet.iterator();
		while(it.hasNext()){
			Map.Entry<String,Integer> me = it.next();
			String name = me.getKey();
			Integer age = me.getValue();
			System.out.println("name:"+name+" age:"+age);
		}
	}
}

算法描述

   给出一段字符串,要求输出字符串中每个字符以及字符出现的次数。并且按照字符出现的次数又打到进行排序

   例如 输入:"jjjaaabccd"
        输出: a(3)j(3)c(2)b(1)d(1)
    算法实现:
    1、将字符串转换成字符数组
    2、定义一个map集合,因为要实现某种顺序,所以要用TreeMap()集合
    3、将字符数组与map集合中进行匹对,
       如果map中不存在该字符,将字符存入到map的key值中,并将value值+1,
       如果存在该字符,将value值取出+1
    4、将结果存入到map集合中,并且创建一个比较器实现Comparator方法,
      按照Value值的大小来进行比较

    5、按照格式遍历输出字符串

import java.util.*;
import java.util.Map.Entry;
public class TreeMapDemo{
	public static void main(String []args){
		System.out.println("请输入字符串");
		Scanner input = new Scanner(System.in);
		String str =  input.next();
	//	String str = "aabbbbbccda";
	char[] ch = str.toCharArray();
	Map<Character,Integer> map = getChar(ch);
	if(map.isEmpty())
		System.out.println("空字符");
	valueSort(map);
	}
	/**
	 * 按照value值进行排序
	 * 思路,将Map集合转换成List集合,利用Collections.sort(list,Comparator<>)方法进行排序
	 * @param map
	 */
	public static void valueSort(Map<Character,Integer> map){
		System.out.println("--------");
		List<Entry<Character, Integer>> list = new ArrayList<Map.Entry<Character,Integer>>(map.entrySet());
		Collections.sort(list,new Comparator<Map.Entry<Character, Integer>>() {
			@Override
			public int compare(Entry<Character, Integer> o1,
					Entry<Character, Integer> o2) {
				return o2.getValue() - o1.getValue();
			}
		});
		Iterator<Entry<Character, Integer>> it = list.iterator();
		while(it.hasNext()){
			Map.Entry<Character,Integer> me = it.next();
			char c = me.getKey();
			int v = me.getValue();
			System.out.println(c+"("+v+")");
		}
	}
	public static Map<Character,Integer> getChar(char[] ch){
		Map<Character,Integer> map = new TreeMap<Character,Integer>();
		for(int i=0;i<ch.length;i++){
			if(ch[i]<'a'&&ch[i]>'z'||ch[i]<'A'&&ch[i]>'Z')
				continue;
			Integer value = map.get(ch[i]);  //通过key值获取map中存入的value值
			if(value == null){  //如果value为空,表示map中不存在该字符,我们将它存入到map中
				map.put(ch[i],1);
			}else{ //如果不为空,表示map中已经存在该字符,我们将value值+1在存入到map中
				value++;
				map.put(ch[i],value);
			}
		}
		return map;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值