LinkedList indexOf
时间: 2023-11-15 15:00:48 浏览: 89
LinkedList indexOf是一个方法,用于返回指定元素在LinkedList中首次出现的索引位置。如果LinkedList不包含该元素,则返回-1。这个方法可以帮助我们快速查找LinkedList中某个元素的位置。在使用该方法之前,需要先创建一个LinkedList对象,并向其中添加元素。可以使用泛型来指定LinkedList中元素的类型,也可以不使用泛型。下面是一个使用LinkedList indexOf方法的例子:
List<String> l1 = new LinkedList();
l1.add("firstElement");
l1.add("secondElement");
int index = l1.indexOf("firstElement");
在这个例子中,我们创建了一个LinkedList对象l1,并向其中添加了两个字符串元素。然后,我们使用indexOf方法查找"firstElement"在LinkedList中的位置,并将结果存储在变量index中。最后,我们可以使用index变量来访问该元素在LinkedList中的位置。
相关问题
手写LinkedList的indexOf方法
下面是一个手写LinkedList的indexOf方法的示例代码:
```java
public int indexOf(Object element) {
int index = 0;
Node<E> current = head;
while (current != null) {
if (current.data.equals(element)) {
return index;
}
index++;
current = current.next;
}
return -1;
}
```
解释:
- 首先,我们初始化一个index变量为0,表示当前遍历到的节点的下标。
- 然后,我们从头节点开始遍历整个链表。
- 对于每个节点,我们检查它是否包含我们要查找的元素。如果是,则返回当前的下标值。
- 如果当前节点不包含我们要查找的元素,则将下标值增加1,并继续遍历下一个节点。
- 如果遍历完整个链表后仍然没有找到元素,那么就返回-1,表示该元素不存在于链表中。
注意,这里假设链表的节点类型为Node<E>,其中E表示节点存储的元素类型。节点类型应该包含一个指向下一个节点的指针(next)和一个存储元素的变量(data)。
手写LinkedList的add、get、size、indexOf、remove方法
下面是一个手写LinkedList的示例代码,包含了add、get、size、indexOf、remove方法:
```java
public class MyLinkedList<E> {
private Node<E> head;
private int size;
private static class Node<E> {
E data;
Node<E> next;
public Node(E data) {
this.data = data;
this.next = null;
}
}
public void add(E element) {
Node<E> newNode = new Node<>(element);
if (head == null) {
head = newNode;
} else {
Node<E> current = head;
while (current.next != null) {
current = current.next;
}
current.next = newNode;
}
size++;
}
public E get(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size);
}
Node<E> current = head;
for (int i = 0; i < index; i++) {
current = current.next;
}
return current.data;
}
public int size() {
return size;
}
public int indexOf(E element) {
int index = 0;
Node<E> current = head;
while (current != null) {
if (current.data.equals(element)) {
return index;
}
index++;
current = current.next;
}
return -1;
}
public boolean remove(E element) {
if (head == null) {
return false;
}
if (head.data.equals(element)) {
head = head.next;
size--;
return true;
}
Node<E> current = head;
while (current.next != null) {
if (current.next.data.equals(element)) {
current.next = current.next.next;
size--;
return true;
}
current = current.next;
}
return false;
}
}
```
解释:
- 首先,我们定义了一个Node类表示链表的节点。每个节点包含一个存储元素的data变量和一个指向下一个节点的next指针。
- 我们还定义了一个头节点head和一个size变量表示链表的大小。
- add方法用于在链表末尾添加一个元素。首先,创建一个新的节点,然后将其添加到链表的末尾。如果链表为空,将新节点设置为头节点。最后,将链表的大小增加1。
- get方法用于获取指定下标的元素。首先,检查下标是否越界,如果是,则抛出IndexOutOfBoundsException异常。然后,从头节点开始遍历链表,直到找到指定下标的节点。最后,返回该节点的元素。
- size方法用于获取链表的大小。它只需返回之前维护的size变量即可。
- indexOf方法用于查找指定元素在链表中的下标。从头节点开始遍历链表,直到找到包含指定元素的节点。如果找到了该元素,则返回其下标值。如果遍历完整个链表后仍然没有找到元素,那么就返回-1,表示该元素不存在于链表中。
- remove方法用于从链表中删除指定元素。首先,检查链表是否为空,如果是,则直接返回false。然后,检查头节点是否包含指定元素,如果是,则将头节点设置为下一个节点。否则,从第二个节点开始遍历链表,直到找到包含指定元素的节点。如果找到了该元素,则将其从链表中删除,并将链表的大小减1。如果遍历完整个链表后仍然没有找到元素,那么就返回false。
阅读全文