【问题标题】:java-More than 18000 cases, should i use switch or if statement?java-超过18000个案例,我应该使用switch还是if语句?
【发布时间】:2011-06-28 06:34:44
【问题描述】:

我正在制作一个 java 移动应用程序来显示人们的报价。它将有超过 18000 条报价,按人和报价数量分类。我的应用程序的用户将输入该人的个人编号和报价单号。 (两个单独的数字)。我应该使用嵌套的 switch case 还是 if else 语句?还是有其他方法可以做到这一点?也许不是制作每个引号的字符串,而是制作带有引号的文本文件(每人 1 个文本文件)n 使用单个 switch 案例来获取 person n goto 行号。那个人的文本文件?对于正在运行的移动设备,哪种方法更快更容易?提前致谢! :)

【问题讨论】:

  • 您考虑过使用数据库吗?
  • 尝试使用字典类。如果您有不使用数据库的限制

标签: java java-me


【解决方案1】:

切换,但这不是最好的方法。 您应该使用数据库,但如果您对此不满意,请编写一个程序为每个人创建一个文件,然后列出引号,例如此处的 britneyspears.txt

克里斯蒂娜·阿奎莱拉和我都是朋友,无论媒体如何编造。

别把我当小女孩。

英格兰是我最喜欢的地方之一。粉丝们太疯狂了。

每天晚上,我都必须看一本书,这样我的大脑就不会再想我所强调的事情了。

让您的程序从目录中查找文件并列出名称,然后可以加载文件并将其拆分为字符串。不过最好使用数据库,而且速度会快得多。

【讨论】:

    【解决方案2】:

    都没有。

    请使用数据库!如果您有数字(id!),您会发现由于索引而导致报价迅速减少。

    【讨论】:

    • 是的,Java-ME 上不存在传统的关系型数据库(因为这个问题已被标记)...
    • 您是否建议使用 if-per-quote?请说你没有。当然,使用基于文件的数据库会限制索引的可能性,但仍然比假设的 if/switch 更好
    【解决方案3】:

    您可以按需加载报价文件并缓存其报价以在同一会话中使用,例如:

    public class Quotes {
        Hashtable cache;
    
        public Quotes() {
           cache = new Hashtable();
        }
    
        public String getQuote(int person, int quoteNumber) {
            if (!cache.containsKey(new Integer(person))) {
               try {
                   loadQuoteFile(person);
               } catch (IOException e) {
                   // Invalid person / file - do what you will
               }
            }
    
            String[] quotes = (String[])cache.get(new Integer(person));
            if (quoteNumber < 0) return quotes[0];
            if (quoteNumber >= quotes.length) return quotes[quotes.length - 1];
            return quotes[quoteNumber];
        }
    
        private void loadQuoteFile(int person) throws IOException {
            String[] quotes;
            // Load the file
            // Parse into strings using linebreaks as the delimiter
            cache.put(new Integer(person), quotes);
        }
    }
    

    无论如何,您都可能需要文本文件方法,除非您热衷于为包含所有报价数据的类编写或生成代码 - 例如一个String[][],以人员和报价编号作为索引,另一个包含人员姓名的字符串[] - 如果您有足够的可用内存,这是另一种选择。从这样的结构中获取特定的报价只是使用给定数字作为数组索引的一种情况(执行范围跟踪)。

    【讨论】:

    • 非常感谢大家!!这帮了大忙!我不想要数据库..文件 n 缓存方法听起来很完美! '一旦我开始工作就会在这里发布.. 非常非常感谢.. :D
    猜你喜欢
    • 2020-11-02
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多