java list 查找元素_java中如何在LinkedList查找元素

java中如何在LinkedList查找元素我们可以通过一个简单的例子来为各位介绍让各位清楚的知道LinkedList查找元素的方法。

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值