如何在Linked LIst中搜索项目?

时间:2012-05-14 05:09:54

标签: java linked-list

添加项目我使用

public void add(Object s) {
    list.add(s);
}

删除我使用的项目

public void remove(Object s) {
    list.remove(s);
}

现在,当我使用点运算符搜索LinkedList并搜索内置API时,我没有看到任何暗示搜索功能的内容。会是contains吗?

6 个答案:

答案 0 :(得分:2)

如果LinkedList API中的contains方法包含搜索元素,则它将返回true

答案 1 :(得分:2)

由于您似乎想知道项目放在列表中的 where ,因此您可以访问找到的实际实例,您希望使用indexOf来查找它并{{3返回找到的实例。没有方法可以将两者结合起来。

List list = ...
Object item = ...
int index = list.indexOf(item);
if (index > 0) {
    Object found = list.get(index);
    ...
}

答案 2 :(得分:1)

是的,对于搜索,您将使用contains方法。但是请注意,搜索LinkedList需要花费O(n)时间,即时间线性地取决于列表的大小,因此如果您的列表很大并且您进行了大量搜索,那么您将需要使用其他一些数据结构体。例如,您可能应该像这样初始化列表:

Collection something = new LinkedList();

然后,如果您发现搜索操作的性能损害了您的程序,那么您只需执行此操作:

Collection something = new LinkedHashSet();

对于更高级的搜索,您应该使用Map而不是列表或任何其他集合,但这是完全不同的数据结构。

答案 3 :(得分:0)

是的,它是contains。如果你想要更高档的东西,你必须编写自己的LinkedList实现或者提出一些实用函数。

答案 4 :(得分:0)

contains(Object)确实是你正在寻找的。如果列表按升序排序,您也可以使用Collections.binarysearch(List, T)

答案 5 :(得分:0)

以下代码示例将使您理解

    // Assuming that we java imported java.util.LinkedList........

    LinkedList ll =new LinkedList();
    ll.add("red");
    ll.add("blue");
    ll.get(0);  // gets the first element.........
    ll.getFirst(); // returns the first element..
    ll.getLast(); // returns the last element....
    int position = ll.indexOf("red");        

    boolean status;
    status= ll.contains("red"); // returns true if list contains red or returns false....