JAVA - 加快代码速度

时间:2017-08-08 19:39:42

标签: java list arraylist

我想加快我的代码。快速状态信息:

  • 有多个列表(String),例如_list1_list2_list3

  • 我尝试在这些列表中找到一个单词(String)。

  • 如果我找到一个单词,我会使用列表中单词的索引。

这是我的代码:

private static int foundIndex (String s) 
{
    if (_list1.contains(s)) {
        return _list1.indexOf(s);
    } else if (_list2.contains(s)) {
        return _list2.indexOf(s);
    } else if (_list3.contains(s)) {
        return _list3.indexOf(s);
    } else if (_list4.contains(s)) {
        return _list4.indexOf(s);
    }
...
...
...
...
    } else if (_list100.contains(s)) {
        return _list100.indexOf(s);
    }
    return -1;
}

如何加快我的代码速度?

3 个答案:

答案 0 :(得分:2)

我想到了几个简单的优化:

1.用if (contains) then indexOf

替换if (i = indexOf(s) >= 0) return i模式

2.添加查找数据结构,如Map<String,Integer>,并使用它代替列表,或者在添加或更改列表时通过更新它来添加它们

答案 1 :(得分:1)

String中添加所有列表(List<String>)并对其进行迭代:

private static int foundIndex (String s) {
   for (String currentList : lists){
       int indexOf = currentList.indexOf(s);
       if (indexOf != -1) {
          return indexOf;
       }
    }
    return -1;
}

答案 2 :(得分:0)

我将代码的算法更改为您的建议。 我之前使用的是列表,现在我改变了它。我使用2D String数组。 但代码性能下降了157%。

新守则:

private static String[][] _lists = new String[200][100];

private static int foundIndex (String s) {
for (int i = 0; i < 200; i++) {
        for (int j = 0; j < 100; j++) {
            if (_lists[i][j].equals(s) == true) {
                return j;
            }
        }
    }
    return -1;
}

这就是问题出现的地方。

如果我正在寻找的代码是“_list [180] [?]”,则很难找到它。

如何加快我的代码速度?

谢谢。