Daily coding

Java Basic : day 10 - Collections Framwork : List - ArrayList 본문

Language/Java_basic

Java Basic : day 10 - Collections Framwork : List - ArrayList

sunnnkim 2019. 11. 29. 18:17

 List

 

ArrayList
  - 관리를 유동적으로 할 수 있는 배열이라고 생각하면 된다.
  - 목적 : 데이터를 효율적으로 관리하기 위함
  collection : 데이터를 수집하는 인터페이스

Collections Framework
    - List
               - ArrayList : 배열처럼 사용할 수 있는 리스트
                              선형구조 : 0-0-0-0-0-...
                              검색속도가 빠르다
                             index number 로 관리됨(배열과 같이 0부터 시작, n-1까지)
       
               - (Vector) 
               - LinkedList (C) : 현재 노드와 다음 노드가 주소값으로 연결된 리스트
                           빈번하게 추가, 삭제의 작업이 필요한 경우 사용하기 적합하다.
                                      추가 / 삭제가 빈번한 곳 : 게임  
      
    - Set
    - Map :  Key와 Value로 데이터를 관리, key는 반드시 하나(중복시에는 데이터가 변경 됨)
                Tree구조로 이루어져 있음 --> 검색에 매우 우수함
               HashMap : Key와 Value로 관리
                  예 : "apple" : "사과"
                  key    value (pair : 한 쌍, pair로 관리됨 (키 값과 밸류 값))
                 웹에서 Json이 HashMap의 키와 밸류로 관리되기 때문에 중요하다
      
    
               TreeMap : HashMap과 기본적으로 같으나, 저장 후 자동으로 sorting 된다.
    
    
 
 
 

public class Lecture01_ArrayList {
          public static void main(String[] args) {


                    ArrayList arrlist = new ArrayList();
                    // 아래 코드와 같다
                    // List list = new ArrayList<>();

                    // CRUD
                    // 추가 

add( )

1. 바로 뒤에 데이터 추가하기

                    // add 정석 방법 
                    Integer i = new Integer(111);
                    arrlist.add(i);

                    // 래퍼클래스는 바로 데이터 작성해서 집어넣어도 된다.
                    arrlist.add(222);

                    // 또는 ()안에 생성자를 넣어도 된다
                    arrlist.add(new Integer(333));

                    

size( )

                    // 리스트의 크기 보는 메소드
                    int len = arrlist.size();
                    System.out.println("list 의 크기 : " + len);

 


get( )
                    // 리스트 데이터 출력하기
                    Integer out = arrlist.get(0); // 어레이리스트는 배열의 인덱스와 동일하게 0부터 시작한다.
                    System.out.println(out); // 111

                    // 어레이리스트 모두 출력하기 : for문 
                    for (int j = 0; j < arrlist.size(); j++) {
                              Integer var = arrlist.get(j);
                              System.out.println("arrlist["+j+"] = " + var);
                    }

                    // 어레이리스트 모두 출력하기 : foreach문 
                    for (Integer in : arrlist) {
                              System.out.println(in);
          }


2. 원하는 위치에 데이터 추가하기


add(index, data);


                    Integer num = new Integer(123);
                   // 0,1번지 사이에 넣기
                    arrlist.add(1, num);
                    System.out.println("1번지에 데이터 추가 : ");
                    for (int j = 0; j < arrlist.size(); j++) {
                              Integer var = arrlist.get(j);
                              System.out.println("arrlist["+j+"] = " + var);
                    }


3. 삭제
remove(index);
                    arrlist.remove(2);
                    System.out.println("기존 2번지 삭제 : ");
                    for (int j = 0; j < arrlist.size(); j++) {
                              Integer var = arrlist.get(j);
                              System.out.println("arrlist["+j+"] = " + var);
                    }


2. remove(Object);

 


검색

// 1. 인덱스로 찾기


// 2. Object로 찾기
// indexOf(Object o) : o값을 리스트목록에서 찾고 제일 첫 데이터의 인덱스를 출력한다.

// 축약적인 방법
int findIndex = arrlist.indexOf(333);
System.out.println("findIndex : " + findIndex);


// 일반 클래스는 이 방법으로 사용 
findIndex = -1;
for (int j = 0; j < arrlist.size(); j++) {
          Integer var = arrlist.get(j);
          if(var ==  123) {
                    findIndex = i;
          break;
          }
}
System.out.println("findIndex" + findIndex);


수정
// set(index , data) : 새로운 데이터를 해당 인덱스의 공간에 대입한다.
Integer updateData = new Integer(555);
arrlist.set(2, updateData);

 

 

 

 


* 다수의 데이터를 담아올 때
// 1. 개수를 카운트 한다. (for)
// 2. 배열을 동적할당 한다
// 3. 찾으면서 데이터를 넣어준다 (for)

 


또는, 리스트로 동적할당한다.
ArrayList findDataList = new ArrayList();
for (int j = 0; j < memlist.size(); j++) {
          MemberDTO d = memlist.get(j);
          if(d.getName().equals("김영숙")) {
                    // 리스트에 찾은 데이터를 넣어준다.
                    findDataList.add(d);
          }
}

for (int j = 0; j < findDataList.size(); j++) {
          System.out.println(findDataList.get(i));
}



}


}