当前位置: 首页 > 知识库问答 >
问题:

基于字符串的正确getter的性能选择

应向晨
2023-03-14

我有一个字符串列表,这些字符串与要检索的特定值相关(例如volumeweight、...)。我从通过HTTP APIendpoint接收的查询中接收到这个列表。

public double getValue(String fieldName) {
switch(fieldName) {
case "volume":
    return getVolume();
case "weight":
    return getWeight();
case "size":
    return getSize();
case "time":
    return getTime();
default:
    throw new IllegalArgumentException("error");
}

有没有更好的方法来动态返回给定字符串的值?性能至关重要,因为此泛型方法的调用频率很高。

共有1个答案

尉迟轶
2023-03-14

我正在寻找一种基于列表中的字符串收集值的泛型方法

似乎应该在某个接口中提取方法double getValue(字符串名称),类应该相应地实现该接口:

interface ValueFinder {
    double getValue(String name);
}

class Foo implements ValueFinder {
    private double volume, weight;
    // getters

    @Override
    public double getValue(String name) {
        if ("volume".equals(name)) { // or equalsIgnoreCase is possible
            return volume;
        } else if ("weight".equals(name)) {
            return weight;
        }
        throw new InvalidArgumentException("Field name not found: " + name);
    }
}

class Bar extends Foo {
    private double size, time;
    // getters

    @Override
    public double getValue(String name) {
        if ("size".equals(name)) {
            return size;
        } else if ("time".equals(name)) {
            return time;
        }
        return super.getValue(name);
    }
}
 类似资料:
  • 所以这个问题已经嘲弄我好几天了。如有任何帮助,不胜感激!我制作了一个LinkedHashMap,它存储字符串每个部分的可能组合,我试图在字符串的ArrayList中获得所有排列,同时维护字符串顺序。例如,如果映射为:A=ab,B=C,则组合为:ab ac abb abc

  • 本文向大家介绍JavaScript基于replace+正则实现ES6的字符串模版功能,包括了JavaScript基于replace+正则实现ES6的字符串模版功能的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript基于replace+正则实现ES6的字符串模版功能。分享给大家供大家参考,具体如下: 采用拼接字符串的形式,将 JSON 数据嵌入 HTML 中。开始时代码量较少

  • 我有一个表格形式的命令输出。我正在解析结果文件的输出并将其存储在字符串中。一行中的每个元素由一个或多个空格字符分隔,因此我使用正则表达式匹配1个或多个空格并拆分它。但是,在每个元素之间插入一个空格: 还有更好的方法吗? 每次拆分后,str2都会附加到列表中。

  • 问题内容: 我有2个数据框,格式如下: 完整的df_search有15,000个项目。df_all有550,000个项目。我正在尝试基于文件字符串中的搜索项目字符串来合并两个数据框。我想要的输出是这样的: 简单的数据框合并不起作用,因为字符串永远不会完全匹配(它始终是子字符串)。我还根据其他关于stackoverflow的问题尝试了以下方法: 这给了我df_all中所有找到的项目的完整列表,但是我

  • 我是 Perl 的新手,但根据我阅读的文档,看起来 Perl 中的 split 函数要求正则表达式模式而不是字符串分隔符作为第一个参数,但我发现使用 之类的东西仍然可以正确拆分字符串。 基于此,我尝试使用可变分隔符(例如。< code>print (split($var,$ string))[0] where < code > $ var = ' ' )并发现它不起作用。我做错了什么? 谢谢! 编

  • 我如何拥有一个被所有其他线程引用的字符串。如何知道所有线程何时执行命令字符串?