본문 바로가기
캠퍼스/Java

49.ArrayList

by Sylar 2022. 8. 8.

-자료구조 

 큐 : 들어온 순서대로 나감
 스택 : 먼저들어온게 가장 마지막에 나감.

 


-배열

 : 연속된 숫자들을 나열한것   int [] arr = new int[i]; 로 사용.
    - > 메모리 한칸에 4bate ( x |  | x |  | x |  |  | ) =>x가 사용중 공간 일때 배열 저장 못함.

         연속적인 공간에 데이터 저장가능하기 때문
          ( x | 1 | 2 | 3 |  | x |  | ) 은 가능
                [0] [1] [2]
         int [] arr = new int[3]; => 처럼 크기를 지정해줘야함 ( 3칸으로 배열하겠다 처럼 ) 

공간을 지정하지 않으면 에러남 ( 위의 x 처럼 배열할 크기보다 작은 공간같은거 때문에 미리 잡아둘 수 없음 )

즉, 배열은 크기를 알수 있는 자료라고 할 수 있다.

 

장점 : 리딩속도가 매우 빠름 ( 연속적인 공간에 데이터가 저장되어 있어서 0부터 쭉 읽으면 되기 때문 )
단점 : 추가를 못함.

          ( x | 1 | 2 | 3 |  | x |  | )  처럼 배열시 될 수도 있지만 ( x | 1 | 2 | 3 | x |  |  | ) 이렇게 되어있을 수 있어서 막아버림.
          배열을 통신으로 받을때 사이즈 확보하기 어려움 ( 얼마나 올지 모르기 때문 )

            => 수신 데이터가 작으면 공간 낭비 매우 심함.
            ex) int [] arr = new int[100]; 으로 잡았는데 1이 수신되는 경우 99칸 낭비.

 

배열을 쓰는 경우 = 고정길이의 데이터를 주고받는 경우 사용 ( 주민등록 번호, 휴대폰 번호 같이 고정적인 데이터 )


-링크드 리스트 

 

: int [] arr = new int[3]; ( x |  | x |  |  | x |  | ) => x가 사용중인 공간일때 ( x | 1 | x | 2 | 3 | x |  | ) 같이 잡아줌.
                                                                                                              0   1    2   3   4   5  6     
 1번 = *3 2번 = *4 3번 =*x << 자기꺼 말고 다음 읽을거 가르킴. 

한개 추가시 ( x | 1 | x | 2 | 3 | x | 4 | ) 같이 잡아줌.
                      0   1   2   3   4   5  6     
 1번 = *3 2번 = *4 3번 =*6 4번=*x

장점 : 데이터 추가 가능 ( 빈공간에 집어넣으면 되서 )
단점 : 리딩이 느림
 
통신은 링크드 리스트로 받고 배열로 변환해서 읽으면 좋음

 

-어레이 리스트

이걸 합친게 어레이리스트임 ( 연속적 배열저장 가능하고 추가도 가능 )
 ㄴ> 받을때 공간을 크게 잡은후, 다받았을때 데이터의 크기 만큼 공간이 줄어듦. 

스피드는 배열이 제일 빠름.

어레이 리스트, 링크드 리스트 == 컬렉션이라 함 ( 배열이 없음 )

웹코딩 할때는 어레이리스트만 써도 됨. ( 제네릭을 알아야 함 )

아무런 타입이나 받아들이겠다 ( Object ) 사용하면 됨.

object가 모든 타입의 부모임

 

 

어레이 리스트를 만들었다.

 

 

1 2 3 이 순서대로 들어갔다.

 

 출력시 arr1.get(0) 이런식으로

 

 

for문을 응용해서 출력 가능.

 

문자열로 받겠다는 선언을 하니 문자열로 잘받아짐.



'캠퍼스 > Java' 카테고리의 다른 글

51.for문으로 그림  (0) 2022.08.14
50. 자바와 DB 연동하기  (0) 2022.08.12
48. 제네릭  (0) 2022.08.08
47. 인터페이스  (0) 2022.08.07
46. 추상 클래스  (0) 2022.08.07