10일차 수업 ( 컬렉션/Hashset/ArrayList/제네릭 )
1. 컬렉션
데이터를 관리하는 여러 가지 저장 방식이 존재하며 이런 여러 가지 방식을 자바의
클래스로 구현한 것이 컬렉션.
<<Collection>> 컬렉션의 최상위 클래스
<<set>> <<List>> <<Map>>
Hashset ArrayList HashMap
SortedSet Vector
1) Hashset 사용해보기
import java.util.HashSet;;
public class Test {
public static void main(String[] args) {
HashSet set =new HashSet();
set.add("박보영");
set.add(new Integer(23));
set.add(new Float(3.14F));
set.add(234);
set.add("박보영"); // 중복 저장
set.add(new Integer(23)); // 중복 저장
set.add(new Float(3.14F)); // 중복 저장
set.add(234); // 중복 저장
System.out.println("출력 : " + set.toString());
}
}
출력 : [234, 3.14, 23, 박보영]
==> set 계열의 특징은 데이터가 중복 저장이 안되며 저장되는 순서가 없다.
즉 데이터 저장이 순서되로 되지 않는다.
2) ArrayList 사용해보기
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList a = new ArrayList();
a.add("박보영");
a.add(new Integer(23));
a.add(new Float(3.14F));
a.add(234);
a.add("박보영"); // 중복 저장
a.add(new Integer(23)); // 중복 저장
a.add(new Float(3.14F)); // 중복 저장
a.add(234); // 중복 저장
System.out.println("출력 : " + a.toString());
for (int i = 0; i < a.size(); i++) {
System.out.print(a.get(i)+", ");
}
}
}
출력 : [박보영, 23, 3.14, 234, 박보영, 23, 3.14, 234]
박보영, 23, 3.14, 234, 박보영, 23, 3.14, 234,
=> 즉 list 는 데이터가 중복 저장이되며 저장은 입력순서되로 된다.
2. DTO 클래스
- 데이터를 효율적으로 전송 및 관리하기 위해서 사용되는 클래스를 의미한다.
3. 제네릭( generic )
- 데이터를 저장할 때 지정된 데이터형을 명시하기 때문에 가독성이 높다.
- 지정된 데이터형으로 형변환 할 필요가 없다.
<일반적으로 사용하는 방법>
ArrayList = list = new ArrayList();
==> 얻어 올 때 반드시 형변환 해야 된다.
==> 잘못된 데이터가 저장 될 수 있다.
(실행시 파악할 수 있다. )
<Generic으로 사용하는 방법>
컬렉션 <저장 데이터형> 변수명 = new 컬렉션<저장 데이터형>();
==> 얻어 올 때 형변환 할 필요가 없다.
==> 잘못된 데이터를 컴파일 시점에 알 수 있다.
====수업 내용======
1. 컬렉션
데이터를 관리하는 여러 가지 저장 방ㅇ식이 존재하며 이런 여러 가지 방식을 자바의
클래스로 구현한 것이 컬렉션.
<<Collection>> 컬렉션의 최상위 클래스
<<set>> <<List>> <<Map>>
Hashset ArrayList HashMap
SortedSet Vector
1) Hashset 사용해보기
import java.util.HashSet;;
public class Test {
public static void main(String[] args) {
HashSet set =new HashSet();
set.add("박보영");
set.add(new Integer(23));
set.add(new Float(3.14F));
set.add(234);
set.add("박보영"); // 중복 저장
set.add(new Integer(23)); // 중복 저장
set.add(new Float(3.14F)); // 중복 저장
set.add(234); // 중복 저장
System.out.println("출력 : " + set.toString());
}
}
출력 : [234, 3.14, 23, 박보영]
==> set 계열의 특징은 데이터가 중복 저장이 안되며 저장되는 순서가 없다.
즉 데이터 저장이 순서되로 되지 않는다.
2) ArrayList 사용해보기
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList a = new ArrayList();
a.add("박보영");
a.add(new Integer(23));
a.add(new Float(3.14F));
a.add(234);
a.add("박보영"); // 중복 저장
a.add(new Integer(23)); // 중복 저장
a.add(new Float(3.14F)); // 중복 저장
a.add(234); // 중복 저장
System.out.println("출력 : " + a.toString());
for (int i = 0; i < a.size(); i++) {
System.out.print(a.get(i)+", ");
}
}
}
출력 : [박보영, 23, 3.14, 234, 박보영, 23, 3.14, 234]
박보영, 23, 3.14, 234, 박보영, 23, 3.14, 234,
=> 즉 list 는 데이터가 중복 저장이되며 저장은 입력순서되로 된다.
2. DTO 클래스
- 데이터를 효율적으로 전송 및 관리하기 위해서 사용되는 클래스를 의미한다.
3. 제네릭( generic )
- 데이터를 저장할 때 지정된 데이터형을 명시하기 때문에 가독성이 높다.
- 지정된 데이터형으로 형변환 할 필요가 없다.
<일반적으로 사용하는 방법>
ArrayList = list = new ArrayList();
==> 얻어 올 때 반드시 형변환 해야 된다.
==> 잘못된 데이터가 저장 될 수 있다.
(실행시 파악할 수 있다. )
<Generic으로 사용하는 방법>
컬렉션 <저장 데이터형> 변수명 = new 컬렉션<저장 데이터형>();
==> 얻어 올 때 형변환 할 필요가 없다.
==> 잘못된 데이터를 컴파일 시점에 알 수 있다.
-----------------------------------------------------------------------
1. 다른 클래스에서 발생된 여러 데이터를 한꺼번에 가져오는 방법.
b 메소드 호출
A 클래스 --------------> B 클래스 ( 여러 데이터 발생 )
<-------------- 홍길동,20 이순신44 유관순 18
결과값 리턴
결과값
보여주기
==> DTO 클래스 + ArrayList를 사용하면 된다.
2. 일관된 방법으로 컬렉션에 저장된 데이터를 얻는 방법.
- HashSet
==> toString()
==> 향상된 for 문
==> Iterator
- ArrayList
==> 첨자이용 : get(index)
==> 향상된 for 문
==> Iterator
-Vector
==> Iterator
=> Enumeration
가. java.util.Enumeration ( 이뉴멀레이션 )
: hasMoreElements() : boolean
nextElements() : Object
나. java.util.Iterator ( 이터레이터 )
: hasNext() : boolean
next() : Object
remove()
==> 메소드를 이용해서 Iteraror, Enumeration 을 얻는다.
( new 하지 않는다. )
3. Map 계열
: 계층구조
Object
|
<<Map>>
|
Hashmap , Hashtable, Properties
: 특징
==> Set, List 계열은 데이터만 저장한다.
Map 계열은 name/value(key/value) 쌍으로 저장한다.
==> 검색이 빠르다.
name(key)을 이용해서 value를 바로 얻는다.
'프로그래밍 > Java' 카테고리의 다른 글
자바 [JAVA] 12일차 수업 ( 파일읽기,쓰기, 객체직렬화 ) (0) | 2017.08.19 |
---|---|
자바 [JAVA] 11일차 수업 ( Java I/O , 표준입출력 ) (0) | 2017.08.19 |
자바 [JAVA] 9일차 수업 ( 예외처리 ) (0) | 2017.08.19 |
자바 [JAVA] 8일차 수업 ( 문자열 , 예외처리 ) (0) | 2017.08.19 |
자바 [JAVA] 7일차 수업 ( 인터페이스, 추상클래스) (0) | 2017.08.18 |