首页 > 其他分享 >Map集合中的具体子类TreeMap

Map集合中的具体子类TreeMap

时间:2024-10-16 21:00:36浏览次数:9  
标签:Map name 子类 treeMap TreeMap Dog2 public

一、TreeMap

元素是一个键值对,可以去重并进行排序

1.先编写一个Dog2类


public class Dog2{
        private String name;
        private int age;

        public Dog2() {
        }

        public Dog2(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 String toString() {
            return "Dog{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }
}

2.编写一个测试类

import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;

public class TreeMapDemo1 {
    public static void main(String[] args) {
        //使用匿名内部类
        TreeMap<Dog2, Integer> treeMap = new TreeMap<Dog2, Integer>(new Comparator<Dog2>() {
            @Override
            public int compare(Dog2 o1, Dog2 o2) {
                //按年龄来排序,如果年龄相同,则比较姓名是否相同
                int i=o1.getAge()-o2.getAge();
                return (i==0)?o1.getName().compareTo(o2.getName()):i;
            }
        });

        Dog2 d1 = new Dog2("煤球",3);
        Dog2 d2 = new Dog2("旺财",2);
        Dog2 d3 = new Dog2("小灰",3);
        Dog2 d4 = new Dog2("煤球",3);
        Dog2 d5 = new Dog2("白线",4);
        treeMap.put(d1,1);
        treeMap.put(d2,2);
        treeMap.put(d3,3);
        treeMap.put(d4,4);
        treeMap.put(d5,5);
        //使用增强for循环来遍历Map里面的键
        for(Dog2 i:treeMap.keySet()){
            System.out.println(i);
        }
        //使用增强for循环来遍历Map里面的值
        for(Integer i:treeMap.values()){
            System.out.println(i);
        }
        //使用增强for循环来遍历Map中的所有的键值对
        //要想不报黄色警告可以指定Map.Entry的泛型
        for(Map.Entry<Dog2,Integer> i:treeMap.entrySet()){
            System.out.println(i);
        }
        System.out.println(treeMap);
    }
}

二、TreeMap的练习题:(类似于TreeSet)

"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)

import java.util.Map;
import java.util.TreeMap;

public class TreeMapTest1 {
    public static void main(String[] args) {
        TreeMap<Character, Integer> treeMap = new TreeMap<>();
        String a="aababcabcdabcde";
        char[] chars=a.toCharArray();

        for (char aChar : chars) {
            //判断chars中的值在不在treeMap的键中,如果不在将该值添加到treeMap的键中,并将值赋为1
            if (treeMap.containsKey(aChar)) {
                treeMap.put(aChar, treeMap.get(aChar) + 1);
                //如果在将其值加一
            } else {
                treeMap.put(aChar, 1);
            }
        }
        System.out.println(treeMap);
        StringBuffer s1 = new StringBuffer();
        for(Map.Entry<Character,Integer> entry:treeMap.entrySet()){
            Character b=entry.getKey();
            Integer c=entry.getValue();
            s1.append(b).append("(").append(c).append(")");
        }
        System.out.println(s1);
    }
}

标签:Map,name,子类,treeMap,TreeMap,Dog2,public
From: https://www.cnblogs.com/ndmtzwdx/p/18470906

相关文章

  • Java算法竞赛之HashMap常用API--哈西表!
    在Java算法竞赛中,HashMap是一个非常重要的数据结构,它提供了许多有用的API来方便地进行键值对的存储、检索和更新。除了getOrDefault方法外,HashMap还有其他一些常用的API。以下是一些主要的HashMapAPI及其在算法竞赛中的常见用法:put(Kkey,Vvalue)作用:将指定的键与值放入H......
  • Map中的具体实现子类HashMap
    一、HashMapHashMap<Student3,String>Map的唯一性指的是键的唯一性,HashMap中需要键的类型要重写hashCode()方法和equals方法二、HashMap的使用1.编写Student3类,里面需要重写hashCode()方法和equals方法importjava.util.Objects;publicclassStudent3{privateStrin......
  • Map集合
    一、Map集合的特点1.元素是键值对构成的2.在同一个Map集合中,键是唯一的3.在同一个Map集合中,值可以发生重复4.一对键值,代表集合中的元素二、Map集合的方法1.Vput(Kkey,Vvalue)向Map集合中添加元素2.Vremove(object0)移除一个键值对3.voidclear()清空Map集合4.boolea......
  • Set集合的直接子类TreeSet
    一、TreeSet:底层数据结构是红黑树(自平衡二叉树),具备了可预测的排序1.自然排序通过实现comparable接口,重写里面的compareTo方法来进行排序1.编写一个Dog类,实现了Comparable接口,并重写里面的方法publicclassDogimplementsComparable<Dog>{privateStringname;pri......
  • Set集合具体实现子类HashSet的子类LinkedHashSet
    一、LinkedHashSet集合的特点:底层数据结构是哈希表和双链表。哈希表保证元素唯一,双链表保证元素有序,元素唯一二、LinkedHashSet集合的使用场景他保持了HashSet集合的特点,所以当我们传入一个对象想要进行去重的时候需要重写里面的hashCode方法和equals方法。publicclassLinke......
  • 关于Gmap.Net在WPF中的运用笔记(二)地图标注及几种图形的绘制
    通过第一篇,我们已经成功的加载了高德地图:https://www.cnblogs.com/zhouxiao123/p/18469933现在,我们来往地图上加点东西。Gmap.Net中,提供了标注类GmapMarker,通过创建标注,在将其添加到地图上,可以实现在地图上标点的功能。准备一张地图标注图,推荐去阿里矢量图库选取,有不少免费的......
  • Set集合的具体子类:HashSet
    一、HashSet的特点:底层数据结构是哈希表,查找速度快,且元素唯一二、HashSet的使用特点:1.向HashSet集合中添加基本数据类型或者String元素的时候会自动去重importjava.util.HashSet;publicclassHashSetDemo1{publicstaticvoidmain(String[]args){//使用......
  • 关于Gmap.Net在WPF中的运用笔记(一)初步加载高德地图
    一、前言最近公司需要开发一个车辆在途轨迹追踪的软件,结合现有系统和技术体系,最终敲定使用WPF+Gmap.Net来实现,这里将一些坑踩一下,做个笔记记录一下。二、项目搭建本项目基于.Net6.0+Gmap.Net.Core+Gmap.Net.WinPresentation,前面是用到的框架版本,后面则是需要用到的地图包,可通......
  • Java遍历Map集合的方法
    Java中遍历  Map 集合的常用方式主要有以下几种:1.使用 keySet()方法遍历 遍历Map的key集合,然后通过key获取value。Map<String,Integer>map=newHashMap<>();map.put("one",1);map.put("two",2);map.put("three",3);for(Stringkey......
  • List集合的具体子类:LinkedList
    一、LinkedList集合的特点:底层的数据结构是双链表,增删快,查询慢,线程不安全,效率高二、特殊功能:publicvoidaddFirst(Ee)及addLast(Ee)addFirst是在集合的第一个位置进行添加,addLast是在集合的最后一个位置进行添加publicEgetFirst()及getLast()getFirst是获取集合的第一......