Array List 클래스 사용자 정의
3654 단어 데이터 구조
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 (원 배열, 원 배열 이 시작 하 는 위치, 목표 배열, 목표 배열 이 시작 하 는 위치, 복사 할 개수)