자바 는 링크 에서 요소 의 획득,조회 와 수정 방법 에 대한 상세 한 설명 을 실현 합 니 다.
이 절 은 지난 절자바 링크 에 요소 추가를 바탕 으로 우리 의 링크 관련 방법 을 계속 보완 하 는 것 입 니 다.이 절 에서 우 리 는 링크 의 요 소 를 어떻게 얻 고 요 소 를 조회 하 며 요 소 를 수정 하 는 지 에 중심 을 두 고 공부 합 니 다.
요소 가 져 오기
1.링크 의 요 소 를 얻 는 방법 에 대한 분석
우 리 는 가상 헤드 노드 를 사 용 했 기 때문에 우 리 는 매번 첫 번 째 실제 노드 부터 시작 해 야 하기 때문에 먼저 가상 헤드 노드 의 다음 노드 가 누구 인지 얻 은 다음 에 이 를 바탕 으로 옮 겨 다 니 며 작업 을 해 야 한다.관련 코드 는 다음 과 같다.
// index(0-based) ( , )
public E get(int index) {
//
if (index < 0 || index >= size) {
throw new IllegalArgumentException("Get failed,Illegal index");
}
Node<E> cur = dummyHead.next;
for (int i = 0; i < index; i++) {
cur = cur.next;
}
return cur.e;
}
2.링크 의 첫 번 째 요 소 를 획득이 방법 은 get()방법 에 의존한다.
//
public E getFirst() {
return get(0);
}
3.링크 의 마지막 요 소 를 획득이 방법 페이지 는 get()방법 에 의존 합 니 다.
//
public E getLast() {
return get(size - 1);
}
2.링크 요소 수정우 리 는 가상 헤드 노드 를 사 용 했 기 때문에 우 리 는 매번 첫 번 째 실제 노드 부터 시작 해 야 하기 때문에 먼저 가상 헤드 노드 의 다음 노드 가 누구 인지 얻 은 다음 에 이 를 바탕 으로 옮 겨 다 니 며 작업 을 해 야 한다.관련 코드 는 다음 과 같다.
// index(0-based) ( , )
public void set(int index, E e) {
//
if (index < 0 || index >= size) {
throw new IllegalArgumentException("update failed,Illegal index");
}
Node<E> cur = dummyHead.next;
for (int i = 0; i < index; i++) {
cur = cur.next;
}
cur.e = e;
}
3.원소 가 있 는 지 판단 하기 e우 리 는 가상 헤드 노드 를 사 용 했 기 때문에 우 리 는 매번 첫 번 째 진실 노드 부터 시작 해 야 한다.따라서 가상 헤드 노드 의 다음 노드 가 누구 인지 먼저 얻 은 다음 에 주어진 요소 값 과 링크 의 요소 값 내용 이 같 는 지 판단 해 야 한다.(equals()방법 이 같 으 면 true 로 돌아 가 고 그렇지 않 으 면 false 로 돌아 가 야 한다.
// e
public boolean contains(E e) {
Node<E> cur = dummyHead.next;
while (cur != null) {
if (cur.e.equals(e)) {
return true;
}
cur = cur.next;
}
return false;
}
4.toString()방법의 재 작성이 링크 대상 을 출력 할 때 사용자 정의 정 보 를 볼 수 있 도록 toString()을 재 작성 하고 개조 합 니 다.
// object ,
@Override
public String toString() {
StringBuilder res = new StringBuilder();
Node<E> cur = dummyHead.next;
while (cur != null) {
res.append(cur + "->");
cur = cur.next;
}
res.append("NULL");
return res.toString();
}
이때 이 방법 은
// object ,
@Override
public String toString() {
StringBuilder res = new StringBuilder();
for (Node<E> cur = dummyHead.next; cur != null; cur = cur.next) {
res.append(cur + "->");
}
res.append("NULL");
return res.toString();
}
테스트main 함 수 를 새로 만 들 고 관련 테스트 코드 를 다음 과 같이 작성 합 니 다.
package LinkedList;
public class TestMain {
public static void main(String[] args) {
LinkedList<Integer> linkedList = new LinkedList<Integer>();
System.out.println("============ ============");
for (int i = 0; i < 5; i++) {
linkedList.addFirst(i);
System.out.println(linkedList);
}
System.out.println("============ ============");
linkedList.set(2,666);
System.out.println(linkedList);
}
}
결 과 는:결과 분석:링크 의 머리 에 요 소 를 추가 하기 때문에 최종 적 으로 결 과 는 오른쪽 에서 왼쪽으로,가장 오른쪽 은 NULL(즉 마지막 노드)로 나 타 났 다.
자바 알고리즘 과 관련 된 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 자바 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.