자바 데이터 구조 기초:선형 표
사실 선형 표 는 생활 과 창고 의 구조 차이 가 많 지 않다.어제 단일 체인 표 한 편 을 총 결 한 것 도 선형 표 의 하나 이다.
오늘 은 포인터 의 이동 을 제어 하여 데이터 의 순서 저장 구 조 를 실현 합 니 다.
수요 분석
우선 이런 순서 저장 구조의 선형 표 밑바닥 은 무엇 을 사용 하 는 지 명확 하 게 해 야 한다.이전에 본 소스 코드 를 보면 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();
}
}
총결산이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 실 수 있 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.