java.util.List
public interface List<E> extends Collection<E>
- 데이터 처리와 뷰를 분리하기 위하여 사용한다.
- 제너릭을 사용하지 않으면 모든걸 다 받는다. 다만 이럴 경우 리스트의 내용을 가져올 때 문제가 생긴다.(가져올 때 연산이 들어가면 에러가 발생한다.) 따라서 제너릭을 사용하여 제약을 걸어준다.
--------------------------------------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public class test {
public static void main(String[] args) throws java.io.IOException {
List list = new ArrayList();
list.add("A");
list.add("B");
System.out.println(list.get(0)+list.get(1));
//error msg : The operator + is undefined for the argument type(s) java.lang.Object, java.lang.Object
List<String> list2 = new ArrayList<String>();
list2.add("A");
list2.add("B");
System.out.println(list2.get(0)+list2.get(1));
}// main end
}// class end
|
--------------------------------------------------------------------------------------------------
- List의 자손 중 ArrayList가 속도가 빠르기 때문에 잘 사용하는 편이다. 그러나 ArrayList의 경우 멀티쓰레드 환경에서 동시 접근이 가능하다라는 단점이 있다. 이와 반대로 Vector는 무거워서 속도는 느린편이지만 멀티쓰레드 환경에서 동시접근이 불가능하다.
[참고] StringBuilder도 동시접근이 가능하며 StringBuffer는 동시접근이 불가능하다.
Collection을 사용하는 이유
번호 | 이름 |
1 | 이진기 |
2 | 김종현 |
3 | 김기범 |
Ex. 번호와 이름으로 이루어진 학생 데이터를 저장하여라
step1. 기본 데이터형
--------------------------------------------------------------------------------------------------
1
2
3
4
5
6
7
|
int num1 = 1;
int num2 = 2;
int num3 = 3;
String name1 = "이진기";
String name2 = "김종현";
String name3 = "김기범";
|
--------------------------------------------------------------------------------------------------
step2. 도메인으로 묶기(클래스 이용)
--------------------------------------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public class Student {
public int num;
public String name;
public Student(int num, String name) {
this.num = num;
this.name = name;
}
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student(1, "이진기"));
list.add(new Student(2, "김종현"));
list.add(new Student(3, "김기범"));
for(Student data:list){
System.out.println(data.num+":"+data.name);
}
}
}
|
-------------------------------------------------------------------------------------------------문제점 : 번호와 이름을 짝지어 주었지만 학생들의 데이터가 전부 따로따로 논다.
step3. 컬렉션 사용
-------------------------------------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
public class Student {
public int num;
public String name;
public Student(int num, String name) {
this.num = num;
this.name = name;
}
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student(1, "이진기"));
list.add(new Student(2, "김종현"));
list.add(new Student(3, "김기범"));
for(Student data:list){
System.out.println(data.num+":"+data.name);
}
}
}
|
-------------------------------------------------------------------------------------------------
- list변수 하나로도 여러 사람의 데이터를 저장할 수 있으며 인덱스를 통해 쉽게 접근 할 수 있다.
'예전 포스팅 모음' 카테고리의 다른 글
[tomcat] 톰캣 소개 및 설치 (0) | 2014.10.22 |
---|---|
[JAVA] 입출력(I/O) (0) | 2014.10.21 |
[DB] CRUD, Package, Trigger, 백업, 복구 (0) | 2014.10.10 |
[DB] pl/sql 문 예제(이메일 검증, 주민등록번호 유효성 검증) (0) | 2014.10.08 |
[DB] Cursor For Loop문 활용하기 (0) | 2014.10.08 |