자바 데이터 구조 기초:선형 표

머리말
사실 선형 표 는 생활 과 창고 의 구조 차이 가 많 지 않다.어제 단일 체인 표 한 편 을 총 결 한 것 도 선형 표 의 하나 이다.
오늘 은 포인터 의 이동 을 제어 하여 데이터 의 순서 저장 구 조 를 실현 합 니 다.
수요 분석
우선 이런 순서 저장 구조의 선형 표 밑바닥 은 무엇 을 사용 하 는 지 명확 하 게 해 야 한다.이전에 본 소스 코드 를 보면 list 는 보통 배열 을 밑 으로 합 니 다.우리 도 예 외 는 아니다.
그 다음 에 우 리 는 선형 표 의 길이 와 모든 요소 의 지침 을 잘 정의 해 야 한다.

private Object[] arr; //      
private int index = -1; //          
private int size; //         
private int LinearListLength = 4; //         
추가,삭제,지정 한 위 치 를 가 져 오고 모든 것 을 가 져 오 며 비어 있 는 지 여 부 를 판단 하 는 다섯 가지 형식 만 보 여 줍 니 다.
부호화
add 방법
add 방법 은 선형 표 에 요 소 를 추가 하기 위해 서 일반적인 매개 변 수 를 입력 해 야 합 니 다.아 이 디 어 를 실현 하 는 것 은 index+1 을 배열 에 색인 영역 을 부여 한 다음 에 size+1 을 얻 는 것 입 니 다.
전체적인 디자인 이 비교적 간단 하고 코드 를 본다.

public E add(E item) {
        //        
        capacity();
        //         index      ,   +1
        //                    
        this.arr[++index] = item;
        System.out.println(index);
        //        +1
        this.size++;
        return item;
    }
getIndex 방법
getIndex 방법 은 주로 지 정 된 위치의 요 소 를 가 져 오 는 데 사 용 됩 니 다.이것 은 간단 합 니 다.밑 에 배열 이 있 기 때문에 우 리 는 배열 의 색인 으로 직접 가 져 올 수 있 습 니 다.

public E getIndex(int index) {
        return (E) this.arr[index];
    }
pop 방법
pop 방법 은 지정 한 위치의 요 소 를 삭제 하 는 것 입 니 다.int 형식의 색인 을 입력 해 야 합 니 다.특수성 때문에 우 리 는 위 에서 지정 한 위치의 요 소 를 얻 는 방법 을 빌려 이 절 차 를 실현 해 야 한다.
요소 가 삭 제 된 후,반복 순환 을 통 해 index 위 치 를 한 자리 앞으로 이동 합 니 다.구체 적 인 코드 는 다음 과 같다.

/**
 *          
 */
public E pop(int index) {
    E e = getIndex(index);
    if (e != null) {
        for (int i = index; i < size; i++) {
            arr[i] = arr[i + 1];
        }
        this.size--;
        return e;
    } else {
        return null;
    }
}
insert 방법
insert 방법 은 두 개의 인자,int 형식의 색인 값,일반적인 데 이 터 를 입력 해 야 합 니 다.지정 한 위치 에 이 범 형 값 을 삽입 한 다음 뒤의 값 을 모두 뒤로 이동 합 니 다.

public E insert(int index, E item) {
        System.out.println(size);
        for (int i = index; i < size; i++) {
            arr[i + 1] = arr[i];
        }
        arr[index] = item;
        this.size++;
        return item;
    }
getAll
이 방법 은 내 가 더 말 할 필요 가 없다.간단 한 순환 이다.

public void getAll() {
        for (Object o : this.arr) {
            System.out.println(o);
        }
    }
여기 서 옮 겨 다 니 는 Object 형식 은 요 소 를 추가 할 때의 형식 으로 자동 으로 바 뀝 니 다.
모든 코드

package com.zxy.xianxingbiao;
/**
 * @Author Zxy
 * @Date 2021/2/4 16:54
 * @Version 1.0
 */
import java.util.Arrays;
/**
 *                 
 */
public class MyLinearList<E> {
    private Object[] arr; //      
    private int index = -1; //          
    private int size; //         
    private int LinearListLength = 4; //         
    /**
     *          
     */
    public boolean empty() {
        return this.size == 0 ? true : false;
    }
    /**
     *          
     */
    public E add(E item) {
        //        
        capacity();
        //         index      ,   +1
        //                    
        this.arr[++index] = item;
        System.out.println(index);
        //        +1
        this.size++;
        return item;
    }
    /**
     *          
     */
    public E insert(int index, E item) {
        System.out.println(size);
        for (int i = index; i < size; i++) {
            arr[i + 1] = arr[i];
        }
        arr[index] = item;
        this.size++;
        return item;
    }
    /**
     *          
     */
    public E getIndex(int index) {
        return (E) this.arr[index];
    }
    /**
     *          
     */
    public E pop(int index) {
        E e = getIndex(index);
        if (e != null) {
            for (int i = index; i < size; i++) {
                arr[i] = arr[i + 1];
            }
            this.size--;
            return e;
        } else {
            return null;
        }
    }
    /**
     *        
     */
    public void getAll() {
        for (Object o : this.arr) {
            System.out.println(o);
        }
    }
    /**
     *         1.5        
     */
    private void capacity() {
        //      
        if (this.arr == null) {
            this.arr = new Object[this.LinearListLength];
        }
        //  1.5      
        if (this.size - (this.LinearListLength - 1) >= 0) { //                           
            this.LinearListLength = this.LinearListLength + (this.LinearListLength >> 1); //    ,        1/2
            this.arr = Arrays.copyOf(this.arr, this.LinearListLength); //         ,       
        }
    }
    public static void main(String[] args) {
        MyLinearList<String> list = new MyLinearList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        System.out.println(list.getIndex(1));
        list.pop(1);
        System.out.println(list.getIndex(1));
        list.getAll();
    }
}
총결산
이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 실 수 있 기 를 바 랍 니 다!

좋은 웹페이지 즐겨찾기