자바 의 배열 대기 열

5682 단어 자바
자바 에는 c 의 링크 와 같은 구조 가 없 기 때문에 배열 의 요 소 를 동적 으로 추가 하려 면 배열 대기 열 이라는 개념 이 있 습 니 다.c 에 서 는 사용 되 지 않 은 배열 에 대해 분석 함수 가 있어 메모리 공간 을 회수 하고 자바 에 서 는 사용 되 지 않 은 대상 을 자동 으로 없 애고 메모리 공간 을 방출 하 는 데 사 용 됩 니 다.
       배열 대기 열 은 간단 한 증가,삭제,검사,기능 을 찾 을 수 있 습 니 다.물론 JKD 에 도 방법 이 있 습 니 다.다음 글 에 제 가 다시 쓴 소스 코드 를 첨부 하 겠 습 니 다.
      
        1.배열 대기 열의 실현 절차
        1.인 터 페 이 스 를 정의 하고 인터페이스 에서 추상 적 인 방법 을 정의 한다.
        2.클래스 를 정의 하고 인터페이스 에 있 는 방법 을 실현 하 며 초기 배열 과 배열 의 길 이 를 정의 합 니 다.
        3.원소 추가
                     1.배열 을 새로 만 듭 니 다.길 이 는 원래 길이+1 입 니 다.
                     2.새 배열 에 원래 배열 의 내용 을 순환 적 으로 할당 합 니 다.
                     3.추 가 된 요 소 를 새 배열 의 끝 에 추가 합 니 다.
                     4.새 배열 의 주 소 를 원래 배열 에 할당 합 니 다.
         4.원소 삭제                   
                     1.배열 을 새로 만 듭 니 다.길 이 는 원래 길이-1 입 니 다.
                     2.새 배열 에 원래 배열 의 내용 을 순환 적 으로 할당 합 니 다.
                     3.새 배열 의 주 소 를 원래 배열 에 할당 합 니 다.
          5.배열 의 길이 가 져 오기
                     1.요 소 를 추가 할 때 배열 길이+,
                     2.요 소 를 삭제 할 때 배열 길이--,
                     3.한 가지 방법 으로 배열 의 길 이 를 되 돌려 줍 니 다.
           6.배열 찾기
                     1.월 계 여부
                     2.배열 아래 표 로 찾기
        
           실제 프로 그래 밍 을 할 때 서로 다른 내용 에 대해 우 리 는 서로 다른 유형의 매개 변수 와 변 수 를 필요 로 하지만 서로 다른 변수 가 우리 가 또 하나의 방법 을 다시 쓰 면 너무 번 거 로 울 수 있 기 때문에 우 리 는 범 형 으로 이 문 제 를 해결한다.
 
          범 형
          1.범용:기호 E
          2.임의의 데이터 형식 일 수 있 습 니 다.일반적으로 우 리 는 대상 을 예화 할 때 사용 합 니 다. 
                   클래스<실제 사용 유형>  대상 이름=new   클래스<실제 사용 하 는 유형>();
             일반적인 대상 을 정의 하 는 방법 입 니 다.
 
           다음은 제 가 자바 에 있 는 JDK 의 배열 대기 열 중 일 부 를 찾 는 방법 입 니 다.
 
import java.util.Collection;
public class ArrayImp<E> implements ArrayInter<E>{
    public Object []array = new Object[0];
    public int size = 0;
	//                
	public boolean add(E e) {
		// TODO Auto-generated method stub
		Object []arraynew = new Object[array.length+1];
		for(int i=0;i<array.length;i++){
			arraynew[i] = array[i];
		}
		arraynew[array.length] = e;
		size++;
		array = arraynew;
		return false;
	}

	//                 
	public void add(int index, E element) {
		// TODO Auto-generated method stub
		Object []arraynew = new Object[array.length+1];
		for(int i=index;i<array.length+1;i++){
			arraynew[i] = array[i-1];
		}
		for(int j=0;j<index;j++){
			arraynew[j]=array[j];
		}
		size++;
		arraynew[index-1] = element;
		array = arraynew;
	}

	//    collection                 
	public void addAll(ArrayInter<E> c) {
		int s = c.size();
		size = s+size;
		Object []ar = new Object[size];
		for(int i=s,j=0;j<s;i++,j++){
			ar[i] = c.get(j);
		}
		for(int j=0;j<s;j++){
			ar[j]=array[j];
		}
		array = ar;		
	}
	
	//           
	public void clear() {
		// TODO Auto-generated method stub
		array = new ArrayImp[0];
		size=0;
	}

	//              
	public E get(int index) {        
		// TODO Auto-generated method stub
		if(index>=0&&index<size){
		      return (E)array[index];                 //     E  
		}
		return null;
	}

	//                  ,            ,   -1
	public int indexOf(Object o) {
		// TODO Auto-generated method stub
	for(int i=0;i<size;i++){
			if(array[i]==o){
				return i+1;
			}
    }
	
		return -1;
	}

	 //          ,   true
	public boolean isEmpty() {
		// TODO Auto-generated method stub
		if(size==0)
		    return true;
		return false;
	}

	//                    ,            ,   -1
	public int lastIndexOf(Object o) {
		// TODO Auto-generated method stub
		for(int i=size-1;i>=0;i--){
			if(array[i]==o){
				return i+1;
			}
        }
		return -1;
	}

	//              
	public E remove(int index) {
		// TODO Auto-generated method stub
		Object []arraynew = new Object[array.length-1];
		for(int j=0;j<index;j++){
			arraynew[j]=array[j]; 
		}
        for(int i=index;i<size;i++){
        	arraynew[i-1]=array[i];
        }
        array=arraynew;
        size--;
		return null;
	}

	//               
	public boolean remove(Object o) {
		// TODO Auto-generated method stub
		Object []arraynew = new Object[array.length-1];
		for(int k=0;k<size;k++){
		    if(o==array[k]){
		    	for(int j=0;j<k;j++){
					arraynew[j]=array[j]; 
				}
		        for(int i=k;i<size;i++){
		        	arraynew[i]=array[i];
		        }
		        array=arraynew;
		        size--;
		    }
			
		}
		return false;
	}

	//                    
	public E set(int index, E element) {
		// TODO Auto-generated method stub
		array[index-1]=element;
		
		return null;
	}

	//           
	public int size() {
		// TODO Auto-generated method stub
		return size;
	}

	@Override
	public boolean addAll(Collection<? extends E> c) {
		// TODO Auto-generated method stub
		return false;
	}

}

 
 

좋은 웹페이지 즐겨찾기