Array List 클래스 사용자 정의

3654 단어 데이터 구조
1. 사용자 정의 ArrayList 클래스 기능
1) 요소 추가: public void add (Item obj);
2) 색인 에 따라 어떤 요 소 를 삭제 합 니 다: Public Item remove (int index)
3) ArrayList 의 어떤 요 소 를 삭제 합 니 다: public boolean remove (Item item)
4) 색인 에 따라 어떤 요 소 를 가 져 옵 니 다: Public Item get (int index)
5) 교체 기 구현, 목록 옮 겨 다 닐 수 있 음
6) 목록 크기 가 져 오기: public int size ()
7) 목록 이 비어 있 는 지 판단: Public boolean isEmpty ()
2. 코드 구현:
class myArrayList implements Iterable		
{
	private Item[] elementData;
	private int size;
	
	public myArrayList()
	{
		this(10);	//      ,   10
	}
	
	public myArrayList(int initialCapacity)
	{
		if(initialCapacity<0)			//          0,     
		{
			try {
				throw new Exception();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		elementData = (Item[])new Object[initialCapacity];	//      ,          
	}
	
	//    
	public int size()
	{
		return size;
	}
	
	//      
	public boolean isEmpty()
	{
		return size==0;
	}
	//    
	public void add(Item obj)
	{
		//    
		/*
			         , size*2
		 */
		if(size>elementData.length-1)
		{
			Item[] newArray = (Item[])new Object[(size*3)/2+1];
			//System.arraycopy(elementData, 0, newArray, 0, elementData.length);//             
			for(int i=0;i=size)		//           0       ,    
		{
			try {
				throw new Exception();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		Item oldValue = elementData[size-1];	//    
		for(int i=index;i+1=size)		//     ,    
		{
			try {
				throw new Exception();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return elementData[index];
	}

	@Override
	public Iterator iterator() {
		return new ArrayListIterator();		//         
	}
	
	private class ArrayListIterator implements Iterator
	{
		private int current = 0;
		@Override
		public boolean hasNext() {
			return current arrayList = new myArrayList<>(3);
		//1.add     
		arrayList.add("3");
		arrayList.add("4");
		arrayList.add("5");
		arrayList.add("6");
		
		//2.           
		for(int i=0;i it = arrayList.iterator();
		while(it.hasNext())
		{
			System.out.print(it.next()+" ");
		}
	}
}

3. 몇 가지 주의사항:
1) Array List 의 바 텀 구현 은 배열 이 므 로 Array List 는 찾기 에 적합 하 며 순서대로 추출 하 는 성질 이 있 습 니 다.
2) 가능 한 한 다양한 유형의 데 이 터 를 추가 하기 위해 Array List 의 배열 은 범 형 배열 을 사용 하고 싶 지만 자바 에 범 형 배열 이 없 기 때문에 범 형 배열 을 정의 할 때 강제로 전환 해 야 합 니 다. 예 를 들 어 Item [] item = (Item []) new Object [3];
3) 배열 의 확장, 첫 번 째 단 계 는 원래 크기 의 두 배 크기 의 배열 을 만 드 는 것 입 니 다. 두 번 째 는 원래 배열 의 내용 을 배열 에 복사 하 는 것 입 니 다. 세 번 째 는 새 배열 을 오래된 배열 로 가리 키 는 것 에 주의 하 십시오.매번 확 장 된 배열 의 길 이 는 원래 배열 의 길이 의 1.5 배 + 1 이다.
4) Array List 류 의 구조 함 수 는 기본 구조 함수 와 형 삼 이 있 는 구조 함수 가 있 습 니 다. 주의 문 제 는 기본 구조 함수 에서 this 지침 을 통 해 대 형 삼 의 구조 함 수 를 호출 합 니 다.
5) 배열 의 한 대상 을 삭제 한 후 두 가 지 를 주의 하 라. 첫 번 째 는 뒤의 대상 을 하나씩 앞으로 이동 시 키 고 마지막 위 치 를 비 워 쓰레기 수 거 기 를 회수 하여 대상 이 떠 나 지 않도록 하 는 것 이다.
6) 배열 복사 함수 System. arraycopy (원 배열, 원 배열 이 시작 하 는 위치, 목표 배열, 목표 배열 이 시작 하 는 위치, 복사 할 개수)

좋은 웹페이지 즐겨찾기