Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- java기초
- CSS
- 필드
- cmd
- MySQL
- arraylist
- 배열
- 점프 투 파이썬
- list
- 오버라이딩
- 이클립스
- 맨땅에 해딩
- emmet
- js
- 컬렉션프레임워크
- java입문
- Git알아보기
- javascript
- 기본코드
- html
- Collection
- object
- jdbc
- Git이해하기
- 데이터베이스연동
- 파일이동버튼
- Eclipse
- form
- 버튼페이지이동
- java
Archives
- Today
- Total
단단히
컬렉션 프레임워크( Collection Framework / C.F)_List.ArrayList 본문
ArrayList는 저장용량을 초과한 객체들이 들어오면 자동적으로 저장 용량(capacity)이 늘어난다.
package list;
public class array{
public static void main(String[] args) {
String[] arr = new Srting[3]; //배열 생성
arr[0] = "안녕";
arr[1] = "반가워";
arr[2] = "잘가";
for(int i = 0; i<arr.length; i++){
System.out.println(arr[i]);
}
}
[ArrayList]
package list;
import java.util.ArrayList;
public class ArrayList{
public static void main(String[] args) {
ArrayList a = new ArrayList(); //ArrayList를 생성한
a.add("haha");
a.add("hoho");
a.add("hehe");
for(int i =0; i<a.size(); i++) {
System.out.println(a.get(i));
}
}
배열과 비교를 해보면 차이점이 있다.
- import를 이용한다. ArrayList를 사용하기 위해서는 java.util.ArrayList;를 불러와야 한다.
- 길이를 의미하는 키워드가 다르다. 배열의 길이는 .length를 사용하고 ArrayList는 .size()메서드를 사용한다.
- 배열은 값을 arr[i]와 같이 바로 값을 가져오는 데에 반해, ArrayList는 a.get(i)로 값을 가져온다.
ArrayList 객체를 생성하면 내부에 10개의 객체를 저장할 수 있는 초기 용량을 가진다.
저장되는 객체수가 10개를 넘어가면 자동으로 용량이 증가된다.
[ArrayList에 제네릭 사용 이유]
List list = new ArrayList();
이렇게 생성된 객체는 모든 타입의 객체가 저장될 수 있다. 타입의 가장 조상인 Object타입으로 (자동) 반환되어 저장되기 때문이다. 이렇게 가장 조상 타입인 Object타입으로 저장되면 모든 타입을 저장할 수 있지만 다시 찾아올 때 객체에 맞는 타입으로 변화해서 가져와야 하는 이중변환 현상이 나타난다.
이렇게 반복적인 타입 변환은 실행 성능을 저하시킨다.
List list = new ArrayList(); //컬렉션 생성,자동형변환
list.add("텀블러");
Object obj = list.get(0); //컬렉션에서 객체를 가져오는 get();
String obj = (String)obj; //강제형변환
그래서 타입을 지정해서 불필요한 타입 변환을 하지 않도록 제네릭을 함께 사용한다.
List<String> list = new List<>();
//List<String> list = new List<String>(); 과 동일
list.add("텀블러");
String cup = list.get(0); //형변환없이 값을 얻음
ArrayList는 특정 인덱스 객체가 제거되면 뒤에 있는 인덱스가 하나씩 앞으로 앞당겨진다.
전체가 당겨지거나 밀리기 때문에 빈번한 삽입이나 삭제가 일어나는 곳에서 ArrayList를 사용하는 것의 바람직하지 않다.(>> LinkedList가 적합하다.)
객체를 맨 마지막에 추가하는 경우나 인덱스 검색하는 경우에는 ArrayList를 사용하는 게 더 좋은 성능을 발휘한다.
잘 없지만 객체의 길이를 고정시킨 체 List를 생성하는 경우가 있다.
List<String> list = Arrays.asList("아메리카노","프라프치노");
//객체를 고정시킨 ArraysList
for(String menu : list){
System.out.println(menu);
}
//향상된 for문
Comments