JAVA

ArrayList 구현

웹개발자준비 2018. 7. 31. 17:01

import java.util.ArrayList;


public class Ex71_ArrayList {


public static void main(String[] args) {

//Ex71_ArrayList

//ArrayList<String> list = new ArrayList<String>();

//list.add("홍길동");

//System.out.println(list.get(0));

//문자열 ArrayList

//배열 생성

MyArrayList list = new MyArrayList();


//추가

list.add("홍길동");

list.add("아무개");

list.add("하하하");

System.out.println("====================");


//읽기

System.out.println(list.get(0));

System.out.println(list.get(1));

System.out.println(list.get(2));

System.out.println("====================");


//개수

System.out.println(list.size());

System.out.println("====================");


//탐색 + 읽기

for (int i=0; i<list.size(); i++) {

    System.out.println(list.get(i));

}

System.out.println("====================");


//수정

list.set(0, "우하하");

System.out.println(list.get(0));

System.out.println("====================");


//삭제

list.remove(1);

for (int i=0; i<list.size(); i++) {

    System.out.println(list.get(i));

}

System.out.println("====================");


//삽입

list.add(1, "호호호");

for (int i=0; i<list.size(); i++) {

    System.out.println(list.get(i));

}

System.out.println("====================");

//검색

if (list.indexOf("홍길동") > -1) {

    System.out.println("홍길동 있음");

} else {

    System.out.println("홍길동 없음");

}

System.out.println("====================");


//초기화

list.clear();

System.out.println(list.size());



}


}


//클래스를 설계하시오.

class MyArrayList{

private String[] list;

private int index;

public MyArrayList() {

this.list = new String[100];

this.index = -1;

}

private void checkIndex() {

if (this.index < 0) {

this.index = 0;

throw new ArrayIndexOutOfBoundsException();

} else if (this.index > 100) {

this.index = 99;

throw new ArrayIndexOutOfBoundsException();

}

}

public void add(String value) {

index++;

list[index] = value;

//배열의 index방에 value추가

}

public String get(int index) {

return this.list[index];

}

public int size() {

return index+1;

}

public void set(int index,String value) {

list[index] = value;

}

public void remove(int index) {

for(int i=index;i<this.index;i++) {

list[i] = list[i+1];

}

this.index--;

}

public void add(int index,String value) {

this.index++;

checkIndex();

for(int i=list.length-2;i>=index;i--) {

list[i+1] = list[i] ;

}

list[index] = value;

}

public int indexOf(String value) {

for(int i=0;i<this.index;i++) {

if(list[i].equals(value)) {

return i;

}

}

return -1;

}

public int lastIndexOf(String value) {

for(int i=this.index-1;i>=0;i--) {

if(list[i].equals(value)) {

return i;

}

}

return -1;

}

public void clear() {

this.index = -1;// size -> index가 -1이 되야 한다.

for(int i=this.index;i>=0;i--) { //내면적으로 모든 값이 null이들어가야 된다.

list[i]=null;

}

}//clear

}


////////////////결과//////////////

홍길동 //System.out.println(list.get(0));
아무개 //System.out.println(list.get(1));
하하하 //System.out.println(list.get(2));
//System.out.println(list.size());

//탐색 + 읽기
홍길동 
아무개 
하하하 

우하하 //list.set(0, "우하하");

//삭제
우하하 
하하하 

//삽입
우하하 
호호호 
하하하 

홍길동 없음 //검색
//초기화