Java 如何在LinkedLIst中搜索项目?

Java 如何在LinkedLIst中搜索项目?,java,linked-list,Java,Linked List,用于添加我使用的项目 public void add(Object s) { list.add(s); } public void remove(Object s) { list.remove(s); } 用于删除我使用的项目 public void add(Object s) { list.add(s); } public void remove(Object s) { list.remove(s); } 现在,当我使用点运算符搜索内置API时,搜索Li

用于添加我使用的项目

public void add(Object s) {
    list.add(s);
}
public void remove(Object s) {
    list.remove(s);
}
用于删除我使用的项目

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

现在,当我使用点运算符搜索内置API时,搜索LinkedList,我没有看到任何建议搜索函数的内容。是的,是的。如果你想要更新奇的东西,你必须自己编写一个LinkedList的实现,或者想出一些实用函数。

是的,这是非常有用的。如果您想要更高级的东西,您必须编写自己的LinkedList实现,或者提供一些实用程序函数。

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

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

是的,对于搜索,您将使用contains方法。但是,请注意,通过LinkedList进行搜索需要一定的时间,即时间与列表的大小成线性关系,因此,如果您的列表很大,并且进行了大量搜索,则需要使用其他数据结构。例如,您可能应该如下初始化列表:

Collection something = new LinkedList();
然后,如果您发现搜索操作的性能正在损害您的程序,您可以这样做:

Collection something = new LinkedHashSet();

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

是的,对于搜索,您将使用contains方法。但是,请注意,通过LinkedList进行搜索需要一定的时间,即时间与列表的大小成线性关系,因此,如果您的列表很大,并且进行了大量搜索,则需要使用其他数据结构。例如,您可能应该如下初始化列表:

Collection something = new LinkedList();
然后,如果您发现搜索操作的性能正在损害您的程序,您可以这样做:

Collection something = new LinkedHashSet();

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

确实是您要寻找的。如果列表按升序排序,您也可以使用。

确实是您要查找的内容。如果列表按升序排序,也可以使用。

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

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

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

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

下面的代码示例将使您理解

    // 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....

下面的代码示例将使您理解

    // 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....

好的,这也是我的想法,我想我不能单独使用API。好的,这也是我的想法,我想我不能单独使用API。我建议您将此URL标记为书签--Java 7 SE API的Javadoc树的根。它包含您问题的答案,数百万人喜欢它。您被回答应该使用contains方法,但您对答案不满意,因为它只返回true或false。因此,请更详细地描述您的场景,也许我们可以为您找到更好的解决方案。同意-我不明白,当您提供要搜索的对象时,为什么您需要取回对象。请更详细地解释您的用例。我建议您将此URL(Java7SEAPI的Javadoc树的根)标记为书签。它包含您问题的答案,数百万人喜欢它。您被回答应该使用contains方法,但您对答案不满意,因为它只返回true或false。因此,请更详细地描述您的场景,也许我们可以为您找到更好的解决方案。同意-我不明白,当您提供要搜索的对象时,为什么您需要取回对象。请更详细地解释您的用例。它将少于200个对象,所以这不会是一个问题,平均值将低于50。它将少于200个对象,所以这不会是一个问题,平均值将低于50。