Map集合

1.1Map集合概述和特点【理解】

  • Map集合概述

  • interface Map<K,V>  K:键的类型;V:值的类型
  • Map集合的特点

    • 键值对映射关系

    • 一个键对应一个值

    • 键不能重复,值可以重复

    • 元素存取无序

  • Map集合的基本使用

 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 }        

1.2Map集合的基本功能【应用】

方法名说明
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 }

 

 

1.3Map集合的获取功能【应用】

方法介绍

方法名说明
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 }

1.4Map集合的遍历(方式1)【应用】

步骤分析

  • 获取所有键的集合。用keySet()方法实现

  • 遍历键的集合,获取到每一个键。用增强for实现

  • 根据键去找值。用get(Object key)方法实现

 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.斗地主案例

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 }

 

posted @ 2020-11-03 21:30  单sir  阅读(100)  评论(0)    收藏  举报