首页 > 解决方案 > 快速搜索 java.util.LinkedList 数组中的元素

问题描述

嘿,我正在寻找一种更好的方法来搜索 LinkedLists 数组中的字符串元素。

public static void main(String[] args) {
    int m = 1000;
    LinkedList<String>[] arrayOfList = new LinkedList[m];
    for (int i = 0; i < m; i++) {
        arrayOfList[i] = new LinkedList<>();
    }
}

这是我的搜索方法:

public int search(String word) {
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < arrayOfList[i].size(); j++) {
            if (arrayOfList[i].get(j).equals(word)) {
                return i;
            }
        }
    }
    return -1;
}

这就是我的 LinkedLists 的样子:

Example output: arrayOfList[0] = [house,car,tree.....]
                arrayOfList[1] = [computer,book,pen....]
                ...... 
          until arrayOfList[1000] = [...]

我的搜索方法应该找到我的单词的索引。示例:搜索(“计算机”)= 1;搜索(“房子”)= 0

标签: java

解决方案


啊,经典!

众所周知,LinkedList 不适合随机访问,即 list.get(j) 方法。它在遍历列表方面要好得多,因此它可以从每个项目跳转到下一个项目。

你可以使用 list.iterator(),但是 foreach 循环做同样的事情:

public int search(String word) {
    for (int i = 0; i < m; i++) {
        for (String listValue: arrayOfList[i]) {
            if (listValue.equals(word)) {
                return i;
            }
        }
    }
    return -1;
}

推荐阅读