2020-08-11

集合框架

Map集合

Map集合概述和特点

在这里插入图片描述

Map接口概述

  • 查看API
  • 将键映射到值的对象
  • 一个映射不能包含重复的键
  • 每个键最多只能映射到一个值

Map接口和Collection接口的不同

  • Map是双列的,Collection是单列的
  • Map的键唯一,Collection的子体系Set是唯一的
  • Map集合的数据结构针对键有效,跟值无关;Collection集合的数据结构是针对元素有效
import java.util.HashMap;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(001, "鹿秀儿");
        student.put(002, "鹿遥知");
        student.put(003, "鹿某人");
        //根据学号获取学生名字
        System.out.println(student.get(003));//鹿某人
    }
}
Map集合的功能概述

添加功能

  • V put(K key,V value):添加元素,也可以作为 替换 功能

    如果键是第一次存储,就直接存储元素,返回null

    如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值

import java.util.HashMap;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(1, "鹿秀儿");
        student.put(2, "鹿遥知");
        String s1 = student.put(3, "鹿某人");
        String s2 = student.put(3, "秀儿");
        System.out.println(student);//{1=鹿秀儿, 2=鹿遥知, 3=秀儿}
        System.out.println(s1);//null
        System.out.println(s2);//鹿某人
    }
}

删除功能

  • void clear():移除所有的键值对元素
import java.util.HashMap;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(1, "鹿秀儿");
        student.put(2, "鹿遥知");
        student.put(3, "鹿某人");
        System.out.println(student);//{1=鹿秀儿, 2=鹿遥知, 3=鹿某人}
        //移除所有元素
        student.clear();
        System.out.println(student);//{}
    }
}
  • V remove(Object key):根据键删除键值对元素,并把值返回
import java.util.HashMap;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(1, "鹿秀儿");
        student.put(2, "鹿遥知");
        student.put(3, "鹿某人");
        //根据键删除元素,返回删除掉的值
        String s = student.remove(2);
        System.out.println(student);//{1=鹿秀儿, 3=鹿某人}
        System.out.println(s);//鹿遥知
    }
}

判断功能

  • boolean containsKey(Object key):判断集合是否包含指定的键
import java.util.HashMap;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(1, "鹿秀儿");
        student.put(2, "鹿遥知");
        student.put(3, "鹿某人");
        //判断集合是否包含指定的键
        boolean b = student.containsKey(1);
        boolean b1 = student.containsKey(4);
        System.out.println(b);//true
        System.out.println(b1);//false
    }
}
  • boolean containsValue(Object value):判断集合是否包含指定的值
import java.util.HashMap;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(1, "鹿秀儿");
        student.put(2, "鹿遥知");
        student.put(3, "鹿某人");
        //判断集合是否包含指定的值
        boolean b = student.containsValue("鹿秀儿");
        boolean b1 = student.containsValue("鹿鹿");
        System.out.println(b);//true
        System.out.println(b1);//false
    }
}
  • boolean isEmpty():判断集合是否为空
import java.util.HashMap;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(1, "鹿秀儿");
        student.put(2, "鹿遥知");
        student.put(3, "鹿某人");
        //判断集合是否为空
        boolean empty = student.isEmpty();
        System.out.println(empty);//false
        student.clear();
        boolean empty1 = student.isEmpty();
        System.out.println(empty1);//true
    }
}

获取功能

  • Set<Map.Entry<K,V>> entrySet():返回一个键值对的Set集合
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(1, "鹿秀儿");
        student.put(2, "鹿遥知");
        student.put(3, "鹿某人");
        System.out.println(student);//{1=鹿秀儿, 2=鹿遥知, 3=鹿某人}
        Set<Map.Entry<Integer, String>> entries = student.entrySet();
        System.out.println(entries);//[1=鹿秀儿, 2=鹿遥知, 3=鹿某人]
    }
}
  • V get(Object key):根据键获取值
import java.util.HashMap;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(1, "鹿秀儿");
        student.put(2, "鹿遥知");
        student.put(3, "鹿某人");
        //根据键获取值
        System.out.println(student.get(2));
    }
}
  • Set keySet():获取集合中所有键的集合
import java.util.HashMap;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(1, "鹿秀儿");
        student.put(2, "鹿遥知");
        student.put(3, "鹿某人");
        //获取所有键的集合
        System.out.println(student.keySet());//[1, 2, 3]
    }
}
  • Collection values():获取集合中所有值的集合
import java.util.HashMap;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(1, "鹿秀儿");
        student.put(2, "鹿遥知");
        student.put(3, "鹿某人");
        //获取所有值的集合
        System.out.println(student.values());//[鹿秀儿, 鹿遥知, 鹿某人]
    }
}

长度功能

  • int size():返回集合中的键值对的对数
import java.util.HashMap;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(1, "鹿秀儿");
        student.put(2, "鹿遥知");
        student.put(3, "鹿某人");
        System.out.println(student.size());//3
    }
}
Map集合的遍历之键找值
import java.util.HashMap;
import java.util.Set;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(11, "鹿秀儿");
        student.put(21, "鹿遥知");
        student.put(31, "鹿某人");
        //获取所有键的集合
        Set<Integer> i = student.keySet();
        //遍历键的集合
        for (Integer integer : i) {
            System.out.print(integer+"\t");
            System.out.println(student.get(integer));
            //21	鹿遥知
            //11	鹿秀儿
            //31	鹿某人
        }
    }
}
Map集合的遍历之键值对对象找键和值
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MyTest {
    public static void main(String[] args) {
        HashMap<Integer, String> student = new HashMap<>();
        student.put(11, "鹿秀儿");
        student.put(21, "鹿遥知");
        student.put(31, "鹿某人");
        Set<Map.Entry<Integer, String>> set = student.entrySet();
        for (Map.Entry<Integer, String> entry : set) {
            System.out.println(entry.getKey()+"\t"+entry.getValue());
        }
    }
}
HashMap集合键是Stirng,值是String的案例

HashMap:允许插入null键 null值

import java.util.HashMap;
import java.util.function.BiConsumer;
public class MyTest {
    public static void main(String[] args) {
        HashMap<String, String> hashMap = new HashMap<>();
        hashMap.put("子", "鼠");
        hashMap.put("丑", "牛");
        hashMap.put("寅", "虎");
        hashMap.put("卯", "兔");
        hashMap.put("辰", "龙");
        hashMap.put("巳", "蛇");
        hashMap.put("午", "马");
        hashMap.put("未", "羊");
        hashMap.put("申", "猴");
        hashMap.put("酉", "鸡");
        hashMap.put("戌", "狗");
        hashMap.put("亥", "猪");
        hashMap.forEach(new BiConsumer<String, String>() {
            @Override
            public void accept(String s, String s2) {
                System.out.println(s + "\t" + s2);
            }
        });
    }
}
HashMap集合键是String,值是Student的案例
import java.util.HashMap;
import java.util.function.BiConsumer;
public class MyTest {
    public static void main(String[] args) {
        HashMap<String, Student> hashMap = new HashMap<>();
        hashMap.put("全校第一",new Student("鹿秀儿", 1003) );
        hashMap.put("全级第一",new Student("鹿秀秀", 1005) );
        hashMap.put("全班第一",new Student("鹿遥知", 1007) );
        hashMap.forEach(new BiConsumer<String, Student>() {
            @Override
            public void accept(String s, Student student) {
                System.out.println(s + "\t" + student.getName() + "\t" + student.getStudentNum());
            }
        });
    }
}

public class Student {
    private String name;
    private int studentNum;

    public Student() {
    }

    public Student(String name, int studentNum) {
        this.name = name;
        this.studentNum = studentNum;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getStudentNum() {
        return studentNum;
    }

    public void setStudentNum(int studentNum) {
        this.studentNum = studentNum;
    }
}
HashMap集合键是Student,值是String的案例

键唯一;注意重写hashCode()方法和equals()方法

import java.util.HashMap;
import java.util.function.BiConsumer;
public class MyTest {
    public static void main(String[] args) {
        HashMap<Student, String> hashMap = new HashMap<>();
        hashMap.put(new Student("鹿秀儿", 1003) ,"全校第一");
        hashMap.put(new Student("鹿秀秀", 1005) ,"全级第一");
        hashMap.put(new Student("鹿遥知", 1007) ,"全班第一");
        hashMap.forEach(new BiConsumer<Student, String>() {
            @Override
            public void accept(Student student, String s) {
                System.out.println(student.getName() + "\t" + student.getStudentNum()+"\t"+s);
                //鹿遥知	1007	全班第一
                //鹿秀秀	1005	全级第一
                //鹿秀儿	1003	全校第一
            }
        });
    }
}

public class Student {
    private String name;
    private int studentNum;

    public Student() {
    }

    public Student(String name, int studentNum) {
        this.name = name;
        this.studentNum = studentNum;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getStudentNum() {
        return studentNum;
    }

    public void setStudentNum(int studentNum) {
        this.studentNum = studentNum;
    }
}
LinkedHashMap的概述和使用

LinkedHashMap的概述

Map接口的哈希表和链接列表实现,具有可预知的迭代顺序

LinkedHashMap的特点

底层的数据结构是链表和哈希表,元素有序,并且唯一

元素的有序性由链表数据结构保证;唯一性由 哈希表数据结构保证

Map集合的数据结构只和键有关

import java.util.LinkedHashMap;
import java.util.function.BiConsumer;
public class MyTest {
    public static void main(String[] args) {
        LinkedHashMap<Integer, String> hashMap = new LinkedHashMap<>();
        hashMap.put(1, "鹿秀儿");
        hashMap.put(2, "鹿秀");
        hashMap.put(3, "路遥知");
        hashMap.put(4, "秀儿");
        hashMap.forEach(new BiConsumer<Integer, String>() {
            @Override
            public void accept(Integer integer, String s) {
                System.out.println(integer + "\t" + s);
            }
        });
    }
}
TreeMap集合键是String值是String的案例

TreeMap键不允许插入null

TreeMap

  • 键的数据结构是红黑树,可保证键的排序和唯一性
  • 排序分为自然排序和比较器排序
  • 线程是不安全的效率比较高
import java.util.TreeMap;
public class MyTest {
    public static void main(String[] args) {
        TreeMap<Integer, String> treeMap = new TreeMap<>();
        treeMap.put(10, "aaa");
        treeMap.put(5, "aaa");
        treeMap.put(1, "aaa");
        treeMap.put(63, "aaa");
        treeMap.put(10, "aaa");
        treeMap.put(19, "aaa");
        System.out.println(treeMap);//{1=aaa, 5=aaa, 10=aaa, 19=aaa, 63=aaa}
    }
}
TreeMap集合键是Student值是String的案例
import java.util.TreeMap;
import java.util.function.BiConsumer;
public class MyTest {
    public static void main(String[] args) {
        TreeMap<Student, String> treeMap = new TreeMap<>();
        treeMap.put(new Student("鹿秀儿", 19), "我是鹿秀儿");
        treeMap.put(new Student("鹿遥知", 22), "我是鹿遥知");
        treeMap.put(new Student("路遥知", 27), "我是路遥知");
        treeMap.put(new Student("路遥知", 19), "我是路遥知");
        treeMap.forEach(new BiConsumer<Student, String>() {
            @Override
            public void accept(Student student, String s) {
                System.out.println(student.getName() + "\t" + student.getAge() + "\t" + s);
                //路遥知	19	我是路遥知
                //鹿秀儿	19	我是鹿秀儿
                //鹿遥知	22	我是鹿遥知
                //路遥知	27	我是路遥知
            }
        });
    }
}

public class Student implements Comparable{
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public int compareTo(Object o) {
        Student student= (Student) o;
        int a=this.age-student.age;
        int b= (a == 0) ? this.name.compareTo(student.name): a;
        return b;
    }
}
统计字符串中每个字符出现的次数

需求:统计字符串中每个字符出现的次数

import java.util.HashMap;
import java.util.Scanner;
import java.util.function.BiConsumer;

public class MyTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请随便输入一段字符串");
        String s = sc.nextLine();//aababcabcdabcde
        HashMap<Character, Integer> hashMap = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            if (!hashMap.containsKey(s.charAt(i))){
                hashMap.put(s.charAt(i), 1);
            }else{
                int m=hashMap.get(s.charAt(i));
                m++;
                hashMap.put(s.charAt(i), m);
            }
        }
        hashMap.forEach(new BiConsumer<Character, Integer>() {
            @Override
            public void accept(Character character, Integer integer) {
                System.out.print(character + "(" + integer + ")");//a(5)b(4)c(3)d(2)e(1)
            }
        });
    }
}
集合嵌套之HashMap嵌套HashMap
import java.util.HashMap;
import java.util.function.BiConsumer;

public class MyTest {
    public static void main(String[] args) {
        //基础班集合
        HashMap<String, Integer> jcMap = new HashMap<>();
        jcMap.put("张三", 20);
        jcMap.put("李四", 22);
        //就业班集合
        HashMap<String, Integer> jyMap = new HashMap<>();
        jyMap.put("王五", 21);
        jyMap.put("赵六", 23);
        //大集合用来装两个小集合
        HashMap<String, HashMap<String, Integer>> max = new HashMap<>();
        max.put("基础班", jcMap);
        max.put("就业班", jyMap);
        max.forEach(new BiConsumer<String, HashMap<String, Integer>>() {
            @Override
            public void accept(String s, HashMap<String, Integer> m) {
                System.out.println(s);
                m.forEach(new BiConsumer<String, Integer>() {
                    @Override
                    public void accept(String s, Integer integer) {
                        System.out.println("\t" + s + "\t" + integer);
                        /*就业班
                        	王五	21
                        	赵六	23
                          基础班
                        	李四	22
                        	张三	20*/
                    }
                });
            }
        });
    }
}
集合嵌套之HashMap嵌套ArrayList
import java.util.ArrayList;
import java.util.HashMap;
import java.util.function.BiConsumer;
import java.util.function.Consumer;

public class MyTest {
    public static void main(String[] args) {
        ArrayList<String> sglist = new ArrayList<>();
        sglist.add("吕布");
        sglist.add("周瑜");
        ArrayList<String> xalist = new ArrayList<>();
        xalist.add("令狐冲");
        xalist.add("林平之");
        ArrayList<String> sdlist = new ArrayList<>();
        sdlist.add("郭靖");
        sdlist.add("杨过");
        HashMap<String, ArrayList<String>> max = new HashMap<>();
        max.put("三国演义", sglist);
        max.put("笑傲江湖", xalist);
        max.put("神雕侠侣", sdlist);
        max.forEach(new BiConsumer<String, ArrayList<String>>() {
            @Override
            public void accept(String s, ArrayList<String> strings) {
                System.out.println(s);
                strings.forEach(new Consumer<String>() {
                    @Override
                    public void accept(String s) {
                        System.out.println("\t" + s);
                        /*神雕侠侣
                        	郭靖
                        	杨过
                          三国演义
                        	吕布
                        	周瑜
                          笑傲江湖
                        	令狐冲
                        	林平之*/
                    }
                });
            }
        });
    }
}
集合嵌套之ArrayList嵌套HashMap
import java.util.ArrayList;
import java.util.HashMap;
import java.util.function.BiConsumer;
import java.util.function.Consumer;

public class MyTest {
    public static void main(String[] args) {
        HashMap<String, String> sgmap = new HashMap<>();
        sgmap.put("周瑜", "小乔");
        sgmap.put("吕布", "貂蝉");
        HashMap<String, String> sdmap = new HashMap<>();
        sdmap.put("郭靖", "黄蓉");
        sdmap.put("杨过", "小龙女");
        HashMap<String, String> xamap = new HashMap<>();
        xamap.put("令狐冲", "任盈盈");
        xamap.put("林平之", "岳灵珊");
        ArrayList<HashMap<String, String>> maps = new ArrayList<>();
        maps.add(sgmap);
        maps.add(sdmap);
        maps.add(xamap);
        maps.forEach(new Consumer<HashMap<String, String>>() {
            @Override
            public void accept(HashMap<String, String> map) {
                map.forEach(new BiConsumer<String, String>() {
                    @Override
                    public void accept(String s, String s2) {
                        System.out.println(s + "---" + s2);
                    }
                });
                System.out.println();
                /*吕布---貂蝉
                  周瑜---小乔

                  杨过---小龙女
                  郭靖---黄蓉

                  令狐冲---任盈盈
                  林平之---岳灵珊*/
            }
        });
    }
}
HashMap和Hashtable的区别

HashMap和Hashtable的区别:查看API可以知道

HashMap:线程不安全,效率高,允许null值和null键

Hashtable:线程安全 , 效率低,不允许null值和null键

Collections工具类的概述和常见方法讲解

Collections类概述:针对集合操作 的工具类

Collections成员方法

  • public static void sort(List list):排序,默认按照自然顺序
import java.util.ArrayList;
import java.util.Collections;
public class MyTest {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(20);
        list.add(100);
        list.add(203);
        list.add(20333);
        list.add(2014);
        Collections.sort(list);
        System.out.println(list);//[20, 100, 203, 2014, 20333]
    }
}
  • public static int binarySearch(List<?> list,T key):二分查找
import java.util.ArrayList;
import java.util.Collections;
public class MyTest {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(20);
        list.add(100);
        list.add(203);
        list.add(20333);
        list.add(2014);
        System.out.println(Collections.binarySearch(list, 100));//1
    }
}
  • public static T max(Collection<?> coll):获取最大值
import java.util.ArrayList;
import java.util.Collections;
public class MyTest {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(20);
        list.add(100);
        list.add(203);
        list.add(20333);
        list.add(2014);
        System.out.println(Collections.max(list));//20333
    }
}
  • public static void reverse(List<?> list):反转
import java.util.ArrayList;
import java.util.Collections;
public class MyTest {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(20);
        list.add(100);
        list.add(203);
        list.add(20333);
        list.add(2014);
        Collections.reverse(list);
        System.out.println(list);//[2014, 20333, 203, 100, 20]
    }
}
  • public static void shuffle(List<?> list):随机置换
import java.util.ArrayList;
import java.util.Collections;
public class MyTest {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(20);
        list.add(100);
        list.add(203);
        list.add(20333);
        list.add(2014);
        Collections.shuffle(list);
        System.out.println(list);//[20, 2014, 203, 20333, 100]
    }
}
模拟斗地主洗牌和发牌
import java.util.*;
public class doudizhu {
    public static void main(String[] args) {
        //创建牌盒
        ArrayList<String> pokerBox = new ArrayList<>();
        //把牌放进去
        String[] colors = {"♠","♥","♦","♣"};
        String[] nums={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        for (String color : colors) {
            for (String num : nums) {
                String poker = color.concat(num);
                pokerBox.add(poker);
            }
        }
        //放大小王
        pokerBox.add("☀");
        pokerBox.add("☼");

        //洗牌
        Collections.shuffle(pokerBox);
        Collections.shuffle(pokerBox);
        Collections.shuffle(pokerBox);
        
        //发牌
        ArrayList<String> 鹿 = new ArrayList<>();
        ArrayList<String>= new ArrayList<>();
        ArrayList<String>= new ArrayList<>();
        ArrayList<String>= new ArrayList<>();

        for (int i = 0; i < pokerBox.size(); i++) {
            if(i>=pokerBox.size()-3){.add(pokerBox.get(i));
            }else if(i%3==0){
                鹿.add(pokerBox.get(i));
            }else if(i%3==1){.add(pokerBox.get(i));
            }else if(i%3==2){.add(pokerBox.get(i));
            }
        }

        lookPoker("鹿", 鹿);
        lookPoker("遥",);
        lookPoker("知",);
        lookPoker("底",);

    }

    private static void lookPoker(String name, ArrayList<String> list) {
        System.out.println(name);
        for (String poker : list) {
            System.out.print(poker+"\t");
        }
        System.out.println();
    }
}
模拟斗地主洗牌和发牌并对牌进行排序的原理图解

在这里插入图片描述

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
public class 斗地主排序版 {
    public static void main(String[] args) {
        HashMap<Integer, String> hm = new HashMap<>();
        ArrayList<Integer> indexs = new ArrayList<>();
        String[] colors = {"♠", "♥", "♦", "♣"};
        String[] nums = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
        //生成牌
        int index = 0;
        for (String num : nums) {
            for (String color : colors) {
                hm.put(index, num.concat(color));
                indexs.add(index);
                index++;
            }
        }

        //手动添加大小王
        // System.out.println(index);
        hm.put(index, "●");
        indexs.add(index);
        index++;
        hm.put(index, "☀");
        indexs.add(index);

       // System.out.println(hm);
      //  System.out.println(indexs);

        //洗牌
        Collections.shuffle(indexs);
        Collections.shuffle(indexs);
        Collections.shuffle(indexs);

        //发牌:发索引集合
        //发牌:得有三个人来斗地主,还得留三张底牌
        TreeSet<Integer> 星仔 = new TreeSet<>();
        TreeSet<Integer> 刀仔 = new TreeSet<>();
        TreeSet<Integer> 高进 = new TreeSet<>();
        TreeSet<Integer> 底牌 = new TreeSet<>();

        for (int i = 0; i < indexs.size(); i++) {
            //留底牌
            if (i >= indexs.size() - 3) {
                底牌.add(indexs.get(i));
            } else if (i % 3 == 0) {
                星仔.add(indexs.get(i));
            } else if (i % 3 == 1) {
                刀仔.add(indexs.get(i));
            } else {
                高进.add(indexs.get(i));
            }
        }

        //看牌:键找值
        lookPoker("星仔", 星仔,hm);
        lookPoker("刀仔 ", 刀仔, hm);

        lookPoker("高进", 高进, hm);
        lookPoker("底牌", 底牌, hm);

    }

    private static void lookPoker(String name, TreeSet<Integer> set, HashMap<Integer, String> hm) {
        System.out.println(name);
        for (Integer key : set) {
            String s = hm.get(key);
            System.out.print(s+"\t");
        }
        System.out.println();

    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值