자바 에서 Array List 의 시 뮬 레이 션 실현
15371 단어 기술 류
1.배열 에 무한 정 요 소 를 추가 할 수 있 습 니 다.
1.어떻게 요 소 를 무한 추가 할 수 있 는 지 분석 합 니 다.이 럴 때 우 리 는 배열 의 크기 를 동태 적 으로 바 꿔 야 합 니 다.데 이 터 를 추가 할 때마다 배열 의 크기 를 판단 해 야 합 니 다.이것 은 이번 시 뮬 레이 션 의 중점 은 System.array copy(배열 복사)입 니 다.코드 는 다음 과 같 습 니 다.
//
private int[] arr;
//
private int index;
//
private int initCapacity = 3;
/** 3 */
public MyArray() {
arr = new int[initCapacity];
}
/** */
public MyArray(int len) {
arr = new int[len];
}
/** */
public void add(int e) {
// ( )
ensureCapacity();
//
arr[index++] = e;
}
/** */
private void ensureCapacity() {
if (index >= arr.length) {
int[] temp = new int[arr.length+arr.length/2];
System.arraycopy(arr, 0, temp, 0, arr.length);
arr = temp;
temp = null;
}
}
2.get 방법 으로 지정 한 위치의 요 소 를 얻 을 수 있 습 니 다.
1.이것 은 너무 많은 설명 이 필요 하지 않 습 니 다.세 계 는 색인 에 따라 요 소 를 되 돌려 주 고 코드 는 다음 과 같 습 니 다.
/** */
public int getIndexValue(int p){
return arr[p];
}
3.size 방법 으로 배열 의 요소 의 개 수 를 얻 을 수 있 습 니 다.
1.index 앞에서 정의 한 색인 을 되 돌려 줍 니 다.이것 이 바로 크기 입 니 다.코드 는 다음 과 같 습 니 다.
/** */
public int size(){
return index;
}
4.시 뮬 레이 션 증가,삭제,검사,수정,정렬 작업
할 말 이 많 지 않 으 니 코드 를 직접 입력 하 세 요.
/** */
public void remove(int pos){
//
//System.arraycopy(arr, pos+1, arr, pos, arr.length - (pos + 1));
for(int i = pos;i < index-1;i++) {
arr[i] = arr[i+1];
}
arr[index-1] = 0;
index--;
}
/** */
public void show() {
for(int i = 0;i < index ;i++) {
System.out.print(arr[i]+" ");
}
}
/** */
public void insert(int p,int element) {
ensureCapacity();
for(int i = index;i > p;i--) {
arr[i] = arr[i-1];
}
arr[p] = element;
index++;
}
/** */
public void sort(int[] a) {
int team = 0;
//
for (int i = 0; i < index; i++) {
for (int j = i+1; j <= index; j++) {
if (a[i] > a[j]) {
team = a[i];
a[i] = a[j];
a[j] = team;
}
}
}
System.out.println(" :");
for(int n:a) {
System.out.print(n+" ");
}
}
/** */
public void Updata(int index,int element) {
arr[index] = element;
show();
}