1

添加我使用的项目

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

删除我使用的项目

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

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

4

6 回答 6

2

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

于 2012-05-14T05:15:54.353 回答
2

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

List list = ...
Object item = ...
int index = list.indexOf(item);
if (index > 0) {
    Object found = list.get(index);
    ...
}
于 2012-05-14T05:42:56.720 回答
1

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

Collection something = new LinkedList();

然后,如果您发现搜索操作的性能正在损害您的程序,您可以这样做:

Collection something = new LinkedHashSet();

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

于 2012-05-14T05:16:27.193 回答
0

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

于 2012-05-14T05:13:20.853 回答
0

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

于 2012-05-14T05:16:58.987 回答
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....
于 2012-06-16T18:11:37.383 回答