ArrayList 구현
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));
3 //System.out.println(list.size());
//탐색 + 읽기
홍길동
아무개
하하하
우하하 //list.set(0, "우하하");
//삭제
우하하
하하하
//삽입
우하하
호호호
하하하
홍길동 없음 //검색
0 //초기화