企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 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; } } ~~~