Map集合的总结

    xiaoxiao2022-07-12  155

    1.Map接口概述: 将映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值 Map接口和Collection接口的不同: Map是双列的,Collection是单列的 Map的键唯一,Collection的子体系Set是唯一的 Map集合的数据结构针对键有效,跟值无关;Collection集合的数据结构是针对元素有效 2.Map集合的一些常用功能 (1)添加功能 V put(K key,V value):添加元素;这个其实还有另一个功能,替换 如果键是第一次存储,就直接存储元素,返回null 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值 (2)删除功能 void clear():移除所有的键值对元素 V remove(Object key):根据键删除键值对元素,并把值返回 (3)判断功能 boolean containsKey(Object key):判断集合是否包含指定的键 boolean containsValue(Object value):判断集合是否包含指定的值 boolean isEmpty():判断集合是否为空 (4)获取功能 Set<Map.Entry<K,V>> entrySet(): 返回一个键值对的Set集合 V get(Object key):根据键获取值 Set keySet():获取集合中所有键的集合 Collection values():获取集合中所有值的集合 (5)长度功能 int size():返回集合中的键值对的对数 3.Map集合的遍历

    HashMap<Integer, String> hashMap = new HashMap<>(); hashMap.put(001,"aaa"); hashMap.put(002,"bbb"); hashMap.put(003,"ccc"); hashMap.put(004,"ddd"); //map集合遍历方式1:keyset():根据键找值; Set<Integer> integers = hashMap.keySet(); for (Integer key : integers) { System.out.println(key+"==="+hashMap.get(key)); } //方式二:entryset() 获取键值对对象; Set<Map.Entry<Integer, String>> entries = hashMap.entrySet(); for (Map.Entry<Integer, String> entry : entries) { Integer key = entry.getKey(); String value = entry.getValue(); System.out.println(key+"==="+value); }

    4.模拟斗地主洗牌和发牌的案例

    public static void main(String[] args) { //A: //案例演示: //模拟斗地主洗牌和发牌,牌没有排序 //得有一副牌 //生成54张牌放到牌盒里面 String[] colors = {"♠", "♥", "♦", "♣"}; String[] nums = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; HashMap<Integer, String> hm = new HashMap<>(); ArrayList<Integer> list = new ArrayList<>();//存索引 int index=0; for (String num : nums) { for (String color : colors) { hm.put(index,color.concat(num)); list.add(index); index++; } } //手动添加大小王 hm.put(index,"★"); list.add(index); index++; hm.put(index,"☆"); list.add(index); //洗牌 Collections.shuffle(list); Collections.shuffle(list); Collections.shuffle(list); //发牌 TreeSet<Integer> 高进 = new TreeSet<>(); TreeSet<Integer> 刀仔 = new TreeSet<>(); TreeSet<Integer> 星仔 = new TreeSet<>(); TreeSet<Integer> 底牌 = new TreeSet<>(); // 高进 0 3 6 9 //刀仔 1 4 7 10 // 星仔 2 5 8 11 for (int i = 0; i < list.size(); i++) { if (i >= list.size() - 3) { 底牌.add(list.get(i)); } else if (i % 3 == 0) { 高进.add(list.get(i)); } else if (i % 3 == 1) { 刀仔.add(list.get(i)); } else { 星仔.add(list.get(i)); } } //看牌 lookPoker(hm,高进,"高进"); lookPoker(hm,刀仔,"刀仔"); lookPoker(hm,星仔,"星仔"); lookPoker(hm,底牌,"底牌"); } private static void lookPoker(HashMap<Integer, String> hm, TreeSet<Integer> ts, String name) { System.out.println(name); for (Integer i : ts) { // System.out.print(hm.get(i)+" "); } System.out.println(); }
    最新回复(0)