集合框架Map

    xiaoxiao2022-07-07  128

    集合框架Map的介绍

    1.Map集合中存放的都是一组映射关系

    2.在集合中我们用的最多的一般是LIst集合和Map集合

    3.增加 putput(key, value) //在原有的键中添加value值会覆盖原有的value值 4.删除 map.clear(); //这个可以清空所有元素 运行结果是返回一个null; HashMap<String, Object> map = new HashMap<>(); map.put("java01", 1); Object obj=map.remove("java01");//这里会移除当前的键 System.out.println(obj);//返回一个value值 5.可以返回替换前的值 map.put("java03", 3); map.put("java04", 3); Object put = map.put("java04", "*"); //可以返回替换前的值 System.out.println(put); //Map方法没有迭代器 //如下图所示

    6. //取元素有entrySet(),keySet()两种方法 //entrySet() Set<Entry<String, Object>> entrySet = map.entrySet(); for (Entry<String, Object> entry : entrySet) { System.out.println(entry.getKey() + "===" + entry.getValue()); } ---------------------------------------------------------- //keySet() Set<String> keySet = map.keySet(); for (String key : keySet) { System.out.println(key + "===" + map.get(key)); } //在Map集合中key不能重复

    集合框架Map应用

    public class TreeMapDemo { public static void main(String[] args) { // Map<Student, String> map = new HashMap<>(); // Map<Student, String> map = new TreeMap<>();// Map<Student, String> map = new TreeMap<>(new StuComp());//实现选择器排序 map.put(new Student("liuting", 18), "bejing"); map.put(new Student("wangwang", 43), "xingjiang"); map.put(new Student("goudan", 28), "dongjiang"); map.put(new Student("xuyangyang", 38), "hulunbeier"); map.put(new Student("liutingting", 18), "bejing"); System.out.println(map.size());//打印长度 Set<Entry<Student, String>> entrySet = map.entrySet();//调用entrySet方法 for (Entry<Student, String> entry : entrySet) {//进行遍历 System.out.println(entry.getKey() + "====" +entry.getValue());//打印键和值 } } } class Student implements Comparable<Student>{ private String name; private int 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 String toString() { return "Student [name=" + name + ", age=" + age + "]"; } public Student(String name, int age) { super(); this.name = name; this.age = age; } public Student() { super(); } private int hashcode() { return this.getName().hashCode() + this.getAge()*39;//*39让其变大,不容易被分成一类. } @Override public boolean equals(Object obj) {//判重用的 Student stu = (Student)obj; return this.getAge() ==stu.getAge() && this.getName().equals(stu.getName()); // int num = this.getName().compareTo(stu.getName()); // Comparable以及comparator } @Override public int compareTo(Student o) { int num = this.getAge() - o.getAge(); if(num ==0) { return this.getName().compareTo(o.getName()); } return this.getAge() - o.getAge(); } } class StuComp implements Comparator<Student>{ @Override public int compare(Student o1, Student o2) { int num = o1.getName().compareTo(o2.getName()); if(num ==0) { return o1.getAge() - o2.getAge(); } return num; } }

    Treemap的理解

    1.TreeMap:查看键值时,它们会被排序,排序由Comparabel.Comparator决定

    2.TreeMap特点:结果是经过排序。

    3.TreeMap可以保证所有的key-value对处于有序状态

    4.排序方式: 自然排序,必须实现Comparable接口. 定制排序:不需要Map的key实现Comparable接口。

    统计字符串出现的次数

    public class HashMapDemo { public static void main(String[] args) { String str = "askgfdklsalfglskagkllaskgdflkas"; str = cishu(str); System.out.println(str); } /** * 字符出现次数统计功能 * @param str * @return */ private static String cishu(String str) { char[] charArray = str.toCharArray();//字符串转换为字符数组 Map<Character, Integer> map = new TreeMap<>()+; for (char c : charArray) {//进行遍历 Integer value = map.get(c); if(value == null) { map.put(c, 1); }else { map.put(c, ++value); } } // StringBuffer跟String StringBuffer sb = new StringBuffer(); for(Map.Entry<Character, Integer> entry:map.entrySet()) { sb.append(entry.getKey() + "("+entry.getValue()+")"); } return sb.toString(); } } 统计功能

    1.将字符串转为字符组,将这个字符串中的字符当做map集合中的Key,将出现的次数作为value值

    2当字符第一次出现的时候,那么用它在集合中进行寻找,返回值必然为null,之后将该字符对应的值改为1

    3.如果说该字符不是第一次出现,该字符对应值不为null,然后应该+1.

    最新回复(0)