java-超过18000个案例,我应该使用switch还是if语句?

时间:2011-06-28 06:34:45

标签: java java-me

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

3 个答案:

答案 0 :(得分:7)

切换,但这不是最好的方法。 你应该使用一个数据库,但是如果你不喜欢那个写一个程序来为每个人创建一个文件,然后列出这里的引号如britneyspears.txt

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

     

不要像对待小女孩一样对待我。

     

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

     

每天晚上,我都要读一本书,这样我的思绪就会停止思考我所强调的事情。

让您的程序从目录和列表名称中查找文件,然后可以加载文件并将其拆分为字符串。使用数据库是可取的,但速度要快得多。

答案 1 :(得分:3)

都不是。

请使用数据库!如果你有数字(id!),你会发现这个报价因索引而迅速变亮。

答案 2 :(得分:1)

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

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[][],个人和报价编号作为索引,另一个String []包含人名 - 如果你有足够的内存,这是另一个选项。从这样的结构中获取特定的引用只是使用给定的数字asarray索引(在你去的时候执行范围追踪)。