본문 바로가기

Computer Science/Data Structure

자료 구조 - ArrayList 자바 구현

ArrayList.java

package list.arraylist.implementation;

public class ArrayList {
private int size = 0;
private Object[] elementData = new Object[100];

public boolean addLast(Object element){
elementData[size] = element;
size++;
return true;
}

public boolean add(int index, Object element){
for(int i = size - 1; i >= index; i--){
elementData[i + 1] = elementData[i];
}
elementData[index] = element;
size++;
return true;
}

public boolean addFirst(Object element){
return add(0, element);
}

public String toString(){
String str = "[";
for(int i = 0; i < size; i++){
str += elementData[i];
if(i < size - 1)
str += ",";
}
return str + "]";
}

public boolean removeAt(int index){
for(int i = index + 1; i <= size -1; i++ )
elementData[i - 1] = elementData[i];

size--;
elementData[size] = null;
return true;
}

public boolean removeFirst(){
return removeAt(0);
}

public boolean removeLast(){
return removeAt(size - 1);
}

public Object get(int index){
return elementData[index];
}

public int size(){
return size;
}

public int indexOf(Object findValue){
int index = 0;
for(int i = 0; i < size -1; i++){
if(elementData[i] == findValue)
index = i;
}
return index;
}

public ListIterator listIterator(){

return new ListIterator();
}

class ListIterator{
private int nextIndex = 0;

public boolean hasNext(){
return nextIndex < size();
}
public Object next(){
return elementData[nextIndex++];
}

public boolean hasPrevious(){
return nextIndex > 0;
}

public Object previous(){
return elementData[--nextIndex];
}

public void add(Object element){
ArrayList.this.add(nextIndex++, element);
}

public void remove(){
ArrayList.this.removeAt(nextIndex-1);
nextIndex--;
}
}


}


Main.java

package list.arraylist.implementation;

public class Main {
public static void main(String[] args){
ArrayList numbers = new ArrayList();
numbers.addLast(10);
numbers.addLast(20);
numbers.addLast(30);
numbers.addLast(40);
numbers.add(1, 15);
numbers.addFirst(5);
//numbers.removeAt(1);
//numbers.removeFirst();
//numbers.removeLast();

System.out.println(numbers.get(1));
System.out.println(numbers.size());
System.out.println(numbers.indexOf(10));

ArrayList.ListIterator li = numbers.listIterator();

while(li.hasNext()){
System.out.println(li.next());
}

while(li.hasPrevious()){
System.out.println(li.previous());
}

while(li.hasNext()){
int number = (int)li.next();
if(number == 30){
li.remove();
}
}
System.out.println(numbers);
}

}


'Computer Science > Data Structure' 카테고리의 다른 글

자료 구조 - Linked List  (0) 2019.03.04
자료 구조 - List  (0) 2019.02.28
자료 구조 - Array in Java  (0) 2019.02.28
자료 구조란 (DATA STRUCTURE) ?  (0) 2019.02.28