You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从给定数据类型列表中选取可兼容所有取值的最优数据类型

最优实现方案

核心思路

  • 为每个内置数值类型预先定义可比较的优先级权重(权重和类型的容纳范围正相关,范围越大权重越高),无需维护复杂的兼容列表
  • 遍历输入的类型列表,过滤出合法的数值类型,同时记录最大权重对应的类型
  • 如果输入中存在非预设的数值类型,直接返回兜底的string

代码实现

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DataTypeSelector {
    // 存储类型和对应权重,权重越高容纳范围越大
    private static final Map<String, Integer> TYPE_WEIGHT = new HashMap<>();
    static {
        TYPE_WEIGHT.put("byte", 1);
        TYPE_WEIGHT.put("short", 2);
        TYPE_WEIGHT.put("int", 3);
        TYPE_WEIGHT.put("long", 4);
        // 后续扩展类型直接在此添加配置即可,比如float、double等
    }

    public String suitableDataType(List<String> input) {
        int maxWeight = 0;
        String resultType = "string";

        for (String type : input) {
            // 遇到未预设的非数值类型直接返回兜底
            if (!TYPE_WEIGHT.containsKey(type)) {
                return "string";
            }
            int currentWeight = TYPE_WEIGHT.get(type);
            if (currentWeight > maxWeight) {
                maxWeight = currentWeight;
                resultType = type;
            }
        }
        return resultType;
    }
}

方案优势

  • 没有硬编码的if-else校验链,后续新增类型仅需在TYPE_WEIGHT中新增一行配置,维护成本极低
  • 时间复杂度为O(n),n为输入列表长度,相比原逐个优先级校验的方案效率更高
  • 逻辑简单清晰,不会出现兼容列表配置错误导致的匹配异常问题

内容的提问来源于stack exchange,提问作者Suman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:24:03