Java 문서 해석: LinkedList 클래스의 indexOf() 메소드 함수 분석
LinkedList는 Java 컬렉션 프레임워크의 이중 연결 목록 구현 클래스입니다. 요소를 동적으로 추가하거나 삭제할 수 있으며 모든 위치에서 삽입 및 삭제 작업을 지원할 수 있습니다. LinkedList 클래스에서 indexOf() 메소드는 연결된 리스트에서 지정된 요소가 처음 나타나는 위치를 찾는 데 사용됩니다. 이 기사에서는 이 메소드의 기능과 사용 방법을 자세히 소개합니다. .
LinkedList 클래스의 indexOf() 메서드 구문은 다음과 같습니다.
public int indexOf(Object o) { int index = 0; if (o == null) { for (Node<E> x = first; x != null; x = x.next) { if (x.item == null) { return index; } index++; } } else { for (Node<E> x = first; x != null; x = x.next) { if (o.equals(x.item)) { return index; } index++; } } return -1; }
이 메서드는 찾을 요소를 나타내는 개체 유형 매개변수 o를 입력으로 받습니다. 이 메서드는 연결 목록에서 요소가 처음 나타나는 위치를 나타내는 int 유형의 값을 반환합니다(0부터 시작). 요소가 연결 목록에 없으면 -1을 반환합니다.
이 방법의 구현 원리를 더 잘 이해하기 위해 이 방법에 대한 자세한 기능 분석이 아래에서 수행됩니다.
- 연결리스트 탐색
우선 연결리스트에서 요소의 위치를 찾으려면 전체 연결리스트를 순회하면서 연결리스트의 첫 번째 노드부터 하나씩 검색해야 합니다. 따라서 이 방법은 두 개의 for 루프를 사용하며 각각의 기능은 연결리스트를 순회하여 요소를 찾는 것입니다.
for (Node<E> x = first; x != null; x = x.next) { if (o.equals(x.item)) { return index; } index++; }
이 코드는 연결리스트의 첫 번째 노드부터 시작하여 연결된 목록의 끝까지(즉, x가 null인 경우) 연결 목록의 노드를 하나씩 연결합니다. 각 순회 중에 현재 노드의 요소가 찾을 요소와 같은지 확인합니다. 동일하면 연결된 목록(즉, 인덱스 변수)의 노드 위치를 반환하고, 그렇지 않으면 다음 순회를 계속합니다.
- 요소가 존재하는지 확인
노드를 순회하는 과정에서 지정된 요소가 연결리스트에 존재하는지 확인해야 합니다. 이 함수를 구현하기 위해 메서드에서 if 문을 사용합니다.
if (o.equals(x.item)) { return index; }
이 문에서 o.equals(x.item)은 o가 나타내는 요소가 x 요소와 같은지 확인하는 것을 의미합니다. 현재 루프된 노드의 항목입니다. 동일하면 연결된 목록(즉, 인덱스 변수)의 노드 위치를 반환하고, 그렇지 않으면 다음 순회를 계속합니다.
요소 존재 여부를 판단할 때 요소가 null인 경우 o.equals(x.item) 대신 item==null을 사용해야 한다는 점에 유의해야 합니다. 따라서 이 방법에는 이 상황을 처리하기 위한 추가 if 문도 필요합니다. 이 문에서
if (x.item == null) { return index; }
x.item==null은 현재 루프되는 노드의 요소가 null임을 의미합니다. 찾을 수도 있습니다. null인 경우 연결된 목록(즉, 인덱스 변수)에서 노드의 위치를 반환하고, 그렇지 않으면 다음 순회를 계속합니다.
- 요소 위치 반환
마지막으로, 연결 리스트 전체를 탐색한 후에도 찾고 있는 요소가 여전히 발견되지 않으면 메소드는 해당 요소가 연결 리스트에 존재하지 않음을 나타내는 -1을 반환합니다. 코드는 다음과 같습니다.
return -1;
따라서 이 방법을 사용할 때는 반환값을 기준으로 우리가 찾고 있는 요소가 연결리스트에 존재하는지 판단해야 합니다. 존재하지 않는 경우 반환되는 숫자는 연결 목록에서 이 요소가 처음 나타나는 위치입니다.
다음은 이 메서드의 사용을 설명하는 특정 코드 예제입니다.
import java.util.LinkedList; public class LinkedListDemo { public static void main(String[] args) { LinkedList<String> list = new LinkedList<String>(); list.add("apple"); list.add("banana"); list.add("grape"); list.add("orange"); list.add("peach"); int index = list.indexOf("apple"); if (index != -1) { System.out.println("apple在链表中的位置是:" + index); } else { System.out.println("链表中不存在apple"); } index = list.indexOf("watermelon"); if (index != -1) { System.out.println("watermelon在链表中的位置是:" + index); } else { System.out.println("链表中不存在watermelon"); } } }
코드는 먼저 LinkedList 개체 목록을 만들고 5개의 요소를 추가합니다. 그런 다음 indexOf() 메서드를 사용하여 연결 리스트에서 "apple"과 "watermelon" 두 요소의 위치를 찾고, 반환 값을 기반으로 두 요소가 연결 리스트에 존재하는지 여부를 판단하여 최종적으로 다음을 출력합니다. 결과.
이 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다.
apple在链表中的位置是:0 链表中不存在watermelon
이 방법은 매우 강력하며 연결 목록에서 지정된 요소의 위치를 빠르게 찾고 자체 비즈니스 로직을 구현하는 데 도움이 될 수 있습니다. 그러나 이 방법을 사용할 경우에는 시간복잡도가 O(n), 즉 연결리스트 요소의 개수가 많아질수록 검색 시간이 점점 길어지므로 주의해야 한다. Linked list 전체를 순회하는 것을 피하되 실제 상황에 따라 최적화해야 합니다.
위 내용은 Java 문서 해석: LinkedList 클래스의 indexOf() 메소드 함수 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.
