前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >订单费用分段计算的有序集合的应用,TreeMap

订单费用分段计算的有序集合的应用,TreeMap

作者头像
oktokeep
发布2025-03-04 08:06:20
发布2025-03-04 08:06:20
2400
代码可运行
举报
文章被收录于专栏:第三方工具第三方工具
运行总次数:0
代码可运行

订单费用分段计算的有序集合的应用,TreeMap

1.TreeMap key是有序的。

代码语言:javascript
代码运行次数:0
复制
package com.example.core.mydemo.java3;

import java.util.TreeMap;

public class TreeMapDemo {
    public static void main(String[] args) {
        // 创建一个 TreeMap
        TreeMap<String, Integer> map = new TreeMap<>();

        // 向 TreeMap 中添加键值对
        map.put("Charlie", 70);
        map.put("David", 60);
        map.put("Alice", 90);
        map.put("Bob", 80);

        // 打印 TreeMap 的内容
        System.out.println(map); // {Alice=90, Bob=80, Charlie=70, David=60}

        // 根据键获取对应的值
        System.out.println(map.get("Alice")); // 90
        System.out.println(map.get("Eve")); // null

        // 根据键删除对应的键值对
        map.remove("Bob");
        System.out.println(map); // {Alice=90, Charlie=70, David=60}

        // 获取 TreeMap 中的键值对的数量
        System.out.println(map.size()); // 3

        // 判断 TreeMap 中是否包含某个键
        System.out.println(map.containsKey("Charlie")); // true
        System.out.println(map.containsKey("Eve")); // false

        // 判断 TreeMap 中是否包含某个值
        System.out.println(map.containsValue(70)); // true
        System.out.println(map.containsValue(50)); // false

        // 清空 TreeMap 中的所有键值对
        map.clear();
        System.out.println(map); // {}
    }
}

2.TreeMap 相关联的操作使用,应用比如按不同的租期天数来取不同的折扣来计算费用。 insuranceMap={4=1.0, 7=0.8, 14=0.5, 28=0.5, 999999=0.2} 1-4天按不打折 4-7天打8折 7到14天到5折 14天28天打5折 28天以上打2折

代码语言:javascript
代码运行次数:0
复制
package com.example.core.mydemo.java3;

import java.util.TreeMap;

public class TreeMapDemo2 {
    public static void main(String[] args) {
        // 创建一个 TreeMap
        TreeMap<String, Integer> map = new TreeMap<>();

        // 向 TreeMap 中添加键值对
        map.put("Alice", 90);
        map.put("Bob", 80);
        map.put("Charlie", 70);
        map.put("David", 60);

        // 打印 TreeMap 的内容
        System.out.println(map); // {Alice=90, Bob=80, Charlie=70, David=60}

        // 返回 TreeMap 中最小和最大的键
        System.out.println(map.firstKey()); // Alice
        System.out.println(map.lastKey()); // David

        // 返回 TreeMap 中小于和大于给定键的最近的键
        System.out.println(map.lowerKey("Bob")); // Alice
        System.out.println(map.higherKey("Bob")); // Charlie

        // 返回 TreeMap 中小于等于和大于等于给定键的最近的键
        System.out.println(map.floorKey("Bob")); // Bob
        System.out.println(map.ceilingKey("Bob")); // Bob

        // 返回一个子映射,包含给定范围内的所有键值对
        System.out.println(map.subMap("Alice", true, "Charlie", true)); // {Alice=90, Bob=80, Charlie=70}

        // 返回一个子映射,包含小于或等于给定键或大于或等于给定键的所有键值对
        System.out.println(map.headMap("Charlie", true)); // {Alice=90, Bob=80, Charlie=70}
        System.out.println(map.tailMap("Charlie", true)); // {Charlie=70, David=60}

        // 返回 TreeMap 中最小和最大的键值对
        System.out.println(map.firstEntry()); // Alice=90
        System.out.println(map.lastEntry()); // David=60

        // 返回 TreeMap 中小于和大于给定键的最近的键值对
        System.out.println(map.lowerEntry("Bob")); // Alice=90
        System.out.println(map.higherEntry("Bob")); // Charlie=70

        // 返回 TreeMap 中小于等于和大于等于给定键的最近的键值对
        System.out.println(map.floorEntry("Bob")); // Bob=80
        System.out.println(map.ceilingEntry("Bob")); // Bob=80

        // 返回并删除 TreeMap 中最小和最大的键值对
        System.out.println(map.pollFirstEntry()); // Alice=90
        System.out.println(map.pollLastEntry()); // David=60
        System.out.println(map);    // {Bob=80, Charlie=70}

    }
}

3.TreeMap应用,数据签名排序等规则使用,按首字母升序来处理

代码语言:javascript
代码运行次数:0
复制
package com.example.core.mydemo.java3;

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

/**
 * TreeMap应用,数据签名排序等规则使用,按首字母升序来处理
 * output:
 * {platenum=沪A00250, sign=1d1b3befd94733a943720f7d3c2fa4a3}
 * dataMap={orderNo=1111222333, status=1}
 * dataMap2={orderNo=2111222333, status=2}
 */
public class TreeMapTest {

    public static void main(String[] args) {
        String ss = "platenum=沪A00250&sign=1d1b3befd94733a943720f7d3c2fa4a3";
        System.out.println(parseFormParams(ss));


        Map<String, Object> dataMap = new TreeMap<>();  //有序
        dataMap.put("orderNo","1111222333");
        dataMap.put("status","1");

        Map<String, Object> dataMap2 = new TreeMap<>();  //有序
        dataMap2.put("status","2");
        dataMap2.put("orderNo","2111222333");

        System.out.println("dataMap="+dataMap);
        System.out.println("dataMap2="+dataMap2);

    }

    public static Map<String,Object> parseFormParams(String reqContent){//platenum=沪A00250&sign=1d1b3befd94733a943720f7d3c2fa4a3
        Map<String,Object> map = new TreeMap<>();
        StringTokenizer st = new StringTokenizer(reqContent,"&");
        while(st.hasMoreTokens()){
            String param = st.nextToken();
            int idx = param.indexOf("=");
            String key = param.substring(0,idx);
            String val = param.substring(idx+1);
            map.put(key, val);
        }
        return map;
    }

}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档