B:案例演示
Map集合的遍历之键找值
HashMap hm = new HashMap<>();hm.put("张三", 23);hm.put("李四", 24);hm.put("王五", 25);hm.put("赵六", 26);/*Set keySet = hm.keySet(); //获取集合中所有的键Iterator it = keySet.iterator(); //获取迭代器while(it.hasNext()) { //判断单列集合中是否有元素 String key = it.next(); //获取集合中的每一个元素,其实就是双列集合中的键 Integer value = hm.get(key); //根据键获取值 System.out.println(key + "=" + value); //打印键值对}*/for(String key : hm.keySet()) { //增强for循环迭代双列集合第一种方式 System.out.println(key + "=" + hm.get(key));}
B:案例演示
Map集合的遍历之键值对对象找键和值
HashMap hm = new HashMap<>();hm.put("张三", 23);hm.put("李四", 24);hm.put("王五", 25);hm.put("赵六", 26);/*Set<>> entrySet = hm.entrySet(); //获取所有的键值对象的集合Iterator<>> it = entrySet.iterator();//获取迭代器while(it.hasNext()) { Entry en = it.next(); //获取键值对对象 String key = en.getKey(); //根据键值对对象获取键 Integer value = en.getValue(); //根据键值对对象获取值 System.out.println(key + "=" + value);}*/for(Entry en : hm.entrySet()) { System.out.println(en.getKey() + "=" + en.getValue());}
C:源码分析
A:案例演示
需求:统计字符串中每个字符出现的次数 String str = "aaaabbbcccccccccc"; char[] arr = str.toCharArray(); //将字符串转换成字符数组 HashMap
for(char c : arr) { //遍历字符数组 /*if(!hm.containsKey(c)) { //如果不包含这个键 hm.put(c, 1); //就将键和值为1添加 }else { //如果包含这个键 hm.put(c, hm.get(c) + 1); //就将键和值再加1添加进来 } //hm.put(c, !hm.containsKey(c) ? 1 : hm.get(c) + 1); Integer i = !hm.containsKey(c) ? hm.put(c, 1) : hm.put(c, hm.get(c) + 1); }for (Character key : hm.keySet()) { //遍历双列集合 System.out.println(key + "=" + hm.get(key));}
public static void sort(List list)public static int binarySearch(List list,T key)public static T max(Collection coll)public static void reverse(List list)public static void shuffle(List list)
A:案例演示
模拟斗地主洗牌和发牌,牌没有排序
//买一副扑克String[] num = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};String[] color = {"方片","梅花","红桃","黑桃"};ArrayList poker = new ArrayList<>();for(String s1 : color) { for(String s2 : num) { poker.add(s1.concat(s2)); }}poker.add("小王");poker.add("大王");//洗牌Collections.shuffle(poker);//发牌ArrayList gaojin = new ArrayList<>();ArrayList longwu = new ArrayList<>();ArrayList me = new ArrayList<>();ArrayList dipai = new ArrayList<>();for(int i = 0; i < poker.size(); i++) { if(i >= poker.size() - 3) { dipai.add(poker.get(i)); }else if(i % 3 == 0) { gaojin.add(poker.get(i)); }else if(i % 3 == 1) { longwu.add(poker.get(i)); }else { me.add(poker.get(i)); }}//看牌System.out.println(gaojin);System.out.println(longwu);System.out.println(me);System.out.println(dipai);
//买一副牌 String[] num = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; String[] color = {"方片","梅花","红桃","黑桃"}; HashMap hm = new HashMap<>(); //存储索引和扑克牌 ArrayList list = new ArrayList<>(); //存储索引 int index = 0; //索引的开始值 for(String s1 : num) { for(String s2 : color) { hm.put(index, s2.concat(s1)); //将索引和扑克牌添加到HashMap中 list.add(index); //将索引添加到ArrayList集合中 index++; } } hm.put(index, "小王"); list.add(index); index++; hm.put(index, "大王"); list.add(index); //洗牌 Collections.shuffle(list); //发牌 TreeSet gaojin = new TreeSet<>(); TreeSet longwu = new TreeSet<>(); TreeSet me = new TreeSet<>(); TreeSet dipai = new TreeSet<>(); for(int i = 0; i < list.size(); i++) { if(i >= list.size() - 3) { dipai.add(list.get(i)); //将list集合中的索引添加到TreeSet集合中会自动排序 }else if(i % 3 == 0) { gaojin.add(list.get(i)); }else if(i % 3 == 1) { longwu.add(list.get(i)); }else { me.add(list.get(i)); } } //看牌 lookPoker("高进", gaojin, hm); lookPoker("龙五", longwu, hm); lookPoker("冯佳", me, hm); lookPoker("底牌", dipai, hm);}public static void lookPoker(String name,TreeSet ts,HashMap hm) { System.out.print(name + "的牌是:"); for (Integer index : ts) { System.out.print(hm.get(index) + " "); } System.out.println();}
联系客服