Map集合
1.1Map集合概述和特点【理解】
-
Map集合概述
- interface Map<K,V> K:键的类型;V:值的类型
-
-
键值对映射关系
-
一个键对应一个值
-
键不能重复,值可以重复
-
元素存取无序
-
-
1 public class MapDemo01 { 2 public static void main(String[] args) { 3 //创建集合对象 4 Map<String,String> map = new HashMap<String,String>(); 5 6 //V put(K key, V value) 将指定的值与该映射中的指定键相关联 7 map.put("001", "张三"); 8 map.put("002", "李四"); 9 map.put("003", "王五"); 10 11 //输出集合对象 12 System.out.println(map); 13 } 14 }
| 说明 | |
|---|---|
| V put(K key,V value) | 添加元素 |
| V remove(Object key) | 根据键删除键值对元素 |
| void clear() | 移除所有的键值对元素 |
| boolean containsKey(Object key) | 判断集合是否包含指定的键 |
| boolean containsValue(Object value) | 判断集合是否包含指定的值 |
| boolean isEmpty() | 判断集合是否为空 |
| int size() |
1 public class MapDemo02 { 2 public static void main(String[] args) { 3 //创建集合对象 4 Map<String,String> map = new HashMap<String,String>(); 5 6 //V put(K key,V value):添加元素 7 map.put("张无忌","赵敏"); 8 map.put("郭靖","黄蓉"); 9 map.put("杨过","小龙女"); 10 11 //V remove(Object key):根据键删除键值对元素 12 // System.out.println(map.remove("郭靖")); 13 // System.out.println(map.remove("郭襄")); 14 15 //void clear():移除所有的键值对元素 16 // map.clear(); 17 18 //boolean containsKey(Object key):判断集合是否包含指定的键 19 // System.out.println(map.containsKey("郭靖")); 20 // System.out.println(map.containsKey("郭襄")); 21 22 //boolean isEmpty():判断集合是否为空 23 // System.out.println(map.isEmpty()); 24 25 //int size():集合的长度,也就是集合中键值对的个数 26 System.out.println(map.size()); 27 28 29 //输出集合对象 30 System.out.println(map); 31 } 32 }
| 说明 | |
|---|---|
| V get(Object key) | 根据键获取值 |
| Set<K> keySet() | 获取所有键的集合 |
| Collection<V> values() | 获取所有值的集合 |
| Set<Map.Entry<K,V>> entrySet() |
1 public class MapDemo03 { 2 public static void main(String[] args) { 3 //创建集合对象 4 Map<String, String> map = new HashMap<String, String>(); 5 6 //添加元素 7 map.put("张无忌", "赵敏"); 8 map.put("郭靖", "黄蓉"); 9 map.put("杨过", "小龙女"); 10 11 //V get(Object key):根据键获取值 12 // System.out.println(map.get("张无忌")); 13 // System.out.println(map.get("张三丰")); 14 15 //Set<K> keySet():获取所有键的集合 16 // Set<String> keySet = map.keySet(); 17 // for(String key : keySet) { 18 // System.out.println(key); 19 // } 20 21 //Collection<V> values():获取所有值的集合 22 Collection<String> values = map.values(); 23 for(String value : values) { 24 System.out.println(value); 25 } 26 } 27 }
-
获取所有键的集合。用keySet()方法实现
-
遍历键的集合,获取到每一个键。用增强for实现
-
1 1 public class MapDemo01 { 2 2 public static void main(String[] args) { 3 3 //创建集合对象 4 4 Map<String, String> map = new HashMap<String, String>(); 5 5 6 6 //添加元素 7 7 map.put("张无忌", "赵敏"); 8 8 map.put("郭靖", "黄蓉"); 9 9 map.put("杨过", "小龙女"); 10 10 11 11 //获取所有键的集合。用keySet()方法实现 12 12 Set<String> keySet = map.keySet(); 13 13 //遍历键的集合,获取到每一个键。用增强for实现 14 14 for (String key : keySet) { 15 16 15 //根据键去找值。用get(Object key)方法实现 17 16 String value = map.get(key); 18 17 System.out.println(key + "," + value); 19 18 } 20 19 } 21 20 }
2.Collections集合工具类
2.1Collections概述和使用【应用】
-
Collections类的作用
是针对集合操作的工具类
-
Collections类常用方法
| 说明 | |
|---|---|
| public static void sort(List<T> list) | 将指定的列表按升序排序 |
| public static void reverse(List<?> list) | 反转指定列表中元素的顺序 |
| public static void shuffle(List<?> list) |
1 public class CollectionsDemo01 { 2 3 public static void main(String[] args) { 4 5 //创建集合对象 6 List<Integer> list = new ArrayList<Integer>(); 7 //添加元素 8 list.add(30); 9 list.add(20); 10 list.add(50); 11 list.add(10); 12 list.add(40); 13 //public static <T extends Comparable<? super T>> void sort(List<T> list):将指定的列表按升序排序 14 Collections.sort(list); 15 //public static void reverse(List<?> list):反转指定列表中元素的顺序 16 Collections.reverse(list); 17 //public static void shuffle(List<?> list):使用默认的随机源随机排列指定的列表 18 Collections.shuffle(list); 19 System.out.println(list); 20 } 21 22 }
3.1模拟斗地主案例-普通版本【应用】
-
案例需求
通过程序实现斗地主过程中的洗牌,发牌和看牌
- 思路
- 创建一个牌盒,也就是定义一个集合对象,用ArrayList集合实现
- 往牌盒里面装牌
- 洗牌,也就是把牌打散,用Collections的shuffle()方法实现
- 发牌,也就是遍历集合,给三个玩家发牌
- 看牌,也就是三个玩家分别遍历自己的牌
1 public class DouDiZhu { 2 //需求:通过程序实现斗地主中的洗牌和发牌,看牌 3 //1.创建一个集合,存储54张牌,ArrayList 4 //2.把牌放到集合里面 5 //3.洗牌,Collections shuffle() 6 //4.发牌,遍历集合,分给三个人 7 //5.看牌,三个玩家看自己的牌 8 9 public static void main(String[] args) { 10 // TODO Auto-generated method stub 11 //1.创建一个集合,存储54张牌,ArrayList 12 ArrayList<String> arrayList = new ArrayList<>(); 13 //2.把牌放到集合里面 14 /** 15 *♦3....♦k,♦A,♦2 16 *♣3.... 17 *♥3..... 18 *♠3..... 19 *大王 小王 20 */ 21 //定义一个数组,存储花色 22 String[] colors = {"♦","♣","♥","♠"}; 23 //定义一个点数数组 24 String[] numbers = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; 25 for (String color : colors) { 26 for (String number : numbers) { 27 arrayList.add(color+number); 28 } 29 30 } 31 arrayList.add("大王"); 32 arrayList.add("小王"); 33 // System.out.println(arrayList); 34 //.洗牌,Collections shuffle() 35 Collections.shuffle(arrayList); 36 // System.out.println(arrayList); 37 // 4.发牌,遍历集合,分给三个人 38 ArrayList<String> swkArrayList = new ArrayList<>(); 39 ArrayList<String> zbjArrayList = new ArrayList<>(); 40 ArrayList<String> tsArrayList = new ArrayList<>(); 41 ArrayList<String> dpArrayList = new ArrayList<>(); 42 43 for (int i = 0; i < arrayList.size();i++) { 44 //先获取牌 45 /*if(i>=arrayList.size()-3) { 46 dpArrayList .add(arrayList.get(i)); 47 i++; 48 }else { 49 swkArrayList.add(arrayList.get(i)); 50 zbjArrayList.add(arrayList.get(i+1)); 51 tsArrayList.add(arrayList.get(i+2)); 52 i=i+3; 53 } */ 54 String pai = arrayList.get(i); 55 if(i>=arrayList.size()-3) { 56 dpArrayList.add(pai); 57 }else if(i%3==0){ 58 swkArrayList.add(pai); 59 }else if(i%3==1){ 60 zbjArrayList.add(pai); 61 }else if(i%3==2){ 62 tsArrayList.add(pai); 63 } 64 } 65 System.out.println(swkArrayList); 66 System.out.println(zbjArrayList); 67 System.out.println(tsArrayList); 68 System.out.println(dpArrayList); 69 70 } 71 72 }

浙公网安备 33010602011771号