java中如何在LinkedList查找元素

作者:简简单单 2016-02-25

LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用.

LinkedList的构造函数如下

1. public LinkedList():  ——生成空的链表
2. public LinkedList(Collection col):  复制构造函数

我们可以使用LinkedList的indexOf()或者lastIndexOf()方法来查找元素(遇到第一个匹配的元素即停止搜索,同时返回该元素的索引。所以,当LinkedList中有两个同样的元素的时候,使用这两个方法只会返回第一个匹配的元素)。虽然LinkedList不像ArrayList一样支持随机搜索(random search),但是我们仍可以遍历整个线性表,查找需要的元素。

java.util.LinkedList是双向链表的实现,因此有两个可以用来进行查找操作,分别是:

indexOf()表示从线性表的头部开始搜索,当找到第一个匹配的元素后就停止搜索并返回匹配的元素的索引
lastIndexOf()表示从线性表的尾部开始搜索,当找到第一个匹配的元素后就停止搜索并返回匹配的元素的索引。
它们的索引值都是以头部为起点开始计算的,所以对于LinkedList中同一个的元素,使用indexOf()和lastIndexOf()两个方法返回的值是一样的。如果LinkedList中有两个一样的元素,则使用lastIndexOf()和indexOf()返回的结果肯定是不同的。正如前面所说的,LinkedList并不支持随机搜索,要搜索一个元素需要遍历整个List,这意味这查找的时间复杂度(time complexity)是O(n)。

 

下面是LinkedList的结构描述:

linked+list+daa+structure+in+Java

代码实例:

import java.util.LinkedList;
 
/**
 * Java Program to search an element inside LinkedList.
 * LinkedList doesn't provide random search and
 * time complexity of searching is O(n)
 *
 * @author java67
 */
 
public class LinkedListSearch {
 
    public static void main(String args[]) {
 
       LinkedList ints = new LinkedList<>();
        ints.add(1001);
        ints.add(1002);
        ints.add(1003);
        ints.add(1004);
        ints.add(1005);
        ints.add(1003);
       
       
        // let's search a duplicate element in linked list
        // for duplicate elements indexOf() and lastIndexOf() will
        // return different indexes.
        System.out.println("First index of 1003 is : " + ints.indexOf(1003));
        System.out.println("Last index of 1003 is : " + ints.lastIndexOf(1003));
       
 
        // let's search an element which is not appeared twice
        // for unique elements both indexOf() and lastIndexOf() will return
        // same position
        System.out.println("First index of 1002 is : " + ints.indexOf(1002));
        System.out.println("Last index of 1002 is : " + ints.lastIndexOf(1002));
 
    }
 
}
 
Output :
First index of 1003 is : 2
Last index of 1003 is : 5
First index of 1002 is : 1
Last index of 1002 is : 1

相关文章

精彩推荐