ArrayList

NOAH·2021년 1월 26일
0
post-thumbnail

도대체 배열을 통해서 리스트를 만드는 것은 어떻게 하는 것일까요?

데이터 추가/삭제

데이터를 추가하면 있던 데이터는 뒤로 밀리는 내부 메커니즘을 가져요 데이터 역시 삭제되어 인덱스를 채우기 위해 앞또는 뒤의 데이터들을 모두 한칸씩 일일히 이동시켜주어야 해요.:)

가져오기

배열을 이용한 리스트 ArrayList는 인덱스를 이용해서 값을 가져오는 데 상당히 빠릅니다.

크기

Size 를 통해서 몇개의 인덱스가 Arraylist가

사용법

생성

import java.util.ArrayList;
import java.util.Iterator;

//생성
ArrayList<integer> numbers = new ArrayList<>();

// 추가
numbers.add(10);
numbers.add(20);
numbers.add(30);
numbers.add(40);


// 1번 인덱스에 50을 추가
numbers.add(1,50);

numbers.remove(2);

//get index2
numbers.get(2);

// index의 개수
nubers.size();

//Iterator라는 데이터 타입은 자바의 인터페이스!
//numbers라는 객체의 메소드인 Iterator를 호출하여서 iterator타입의 변수 it에 담는다.
Iterator it = numbers.iterator();
while(it.hasNext()){
int value = (int)it.next();
if(value == 30){
it.romove();
}
}

//numbers안에 값이 순차적으로 value의 값에 담는다. 
for(int value : numbers){
System.out.println(value);
}


for(int i = 0 ; i < number.size() ; i++){
Systeom.out.println(numbers.get(i));
}

객체 생성하기

public class ArrayList{
// 현재는 0개의 배열이 데이터에 있음.
	private int size = 0 ; 
// 오브젝트 타입의 객체를 비공개형식의 변수를 선언, 배열의 크기는 100
	private Object[] elementData = new object[100];
    

}

addLast


package 생활코딩;

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

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

}

package 생활코딩;

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);
        System.out.println(numbers);

    }
}

add

반복문을 코드화 시키면

package 생활코딩;

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);


   }
}
package 생활코딩;

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;



   }

}

addFirst는 인덱스 0번째에 add 해주는 것과 동일 하므로.

package 생활코딩;

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);


    }
}
package 생활코딩;

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

    public boolean addFirst(Object element){
        return add(0, element);
    }
    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;



    }

}

toString

자바의 toString 이라는 약속되어 있는 메소드를 이용하여 출력할 수 있어요.

package 생활코딩;

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 를 출력했을 때,toString 의 메소드 값이 출력 되도록 약속되어 있어요.
        System.out.println(numbers);

    }
}

//윗부분 소스는 동일 
// toSring 메소드의 구현부에는 변수 str에 각각의 element를 반복문통해 담고 리턴 

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

remove

package 생활코딩;

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);
        // 1번 인덱스 20을 삭제하는 remove method를 만들어 보아요.
        numbers.remove(1);
        System.out.println(numbers);

    }
}


package 생활코딩;

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

   public boolean addFirst(Object element){
       return add(0, element);
   }
   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 String toString(){
       String str = "[" ;
       for(int i = 0; i < size ; i++){
           str += elementData[i];
           if ( i < size - 1){
               str += ",";
           }
       }
       return str + "]";
   }
// get index for remove, and pull the very next index into former index we get til size -1
   public Object remove(int index) {
       // to return value removed
       Object removed = elementData[index];
       for (int i = index + 1; i <= size - 1; i++) {
           elementData[i - 1] = elementData[i];
       }
       size --;
       // get rid of last index, remaining one..
       elementData[size] = null ;

       return removed ;
   }
}

출력값


[10,30,40]

removeFirst, removeLast


package 생활코딩;

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

    public boolean addFirst(Object element){
        return add(0, element);
    }
    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 String toString(){
        String str = "[" ;
        for(int i = 0; i < size ; i++){
            str += elementData[i];
            if ( i < size - 1){
                str += ",";
            }
        }
        return str + "]";
    }

    public Object remove(int index) {
        Object removed = elementData[index];
        for (int i = index + 1; i <= size - 1; i++) {
            elementData[i - 1] = elementData[i];
        }
        size --;
        elementData[size] = null ;
        return removed ;
    }

    // removeFirst() method returns remove(0) which delete index 0 value
    public Object removeFirst(){
        return remove(0);
    }
    // last value should be ArrayList(size - 1) cause Array list Started from Zero
    // removeLast() method returns remove(size - 1) deleting last value
    public Object removeLast(){
        return remove(size - 1 );
    }

}

package 생활코딩;

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.removeFirst();
        numbers.removeLast();

        System.out.println(numbers);

    }
}

output

[20,30]

get

package 생활코딩;

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

    public boolean addFirst(Object element){
        return add(0, element);
    }
    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 String toString(){
        String str = "[" ;
        for(int i = 0; i < size ; i++){
            str += elementData[i];
            if ( i < size - 1){
                str += ",";
            }
        }
        return str + "]";
    }

    public Object remove(int index) {
        Object removed = elementData[index];
        for (int i = index + 1; i <= size - 1; i++) {
            elementData[i - 1] = elementData[i];
        }
        size --;
        elementData[size] = null ;
        return removed ;
    }


    public Object removeFirst(){
        return remove(0);
    }

    public Object removeLast(){
        return remove(size - 1 );
    }

    // to get index returns should be not index but elementdata!!
    public Object get(int index){
        return elementData[index];
    }

}

package 생활코딩;

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);
        // Arraylist Strength? you can touch with Arraylist through INDEX!
        System.out.println( numbers.get(0));
        System.out.println( numbers.get(1));
        System.out.println( numbers.get(2));
        System.out.println( numbers.get(3));
    }
}

ouput


10
20
30
40

0개의 댓글