'컬렉션'에 해당되는 글 1건
- 2008.08.20 Part 5. 자바에서 자주 사용되는 클래스 IV - 컬렉션 클래스와 제네릭
Part 5. 자바에서 자주 사용되는 클래스 IV - 컬렉션 클래스와 제네릭
/*배열은 원소의 자료형태가 결정
int []s=new int[5];
String []name=new String[5];
컬렉션 클래스의 설계 원리
- 자료구조(알고리즘) - 해쉬 테이블 혹은 ArrayList가 일반화되어 정의
- 원소들을 자바의 최상위 클래스 Object 형으로 저장하도록 설계
- 원소가 추가되는 순간에 업캐스팅
ArrayList []s=new ArrayList(); // 점수를 저장하기 위한 용도 : 원소가 Object형
ArrayList []name=new ArrayList(); // 이름을 저장하기 위한 용도 : 원소가 Object형
[1.4버전까지의 컬렉션 클래스의 단점]
1. 하나의 ArrayList 객체의 원소 자료형이 혼합되어서 사용될수 있다는 단점
2. 원소를 추출한 후에는 다운캐스팅을 위한
명시적인 형변환을 해야함(캐스트 연산자로)
name.add("이강국");
name.add(10); // 원소의 자료형이 혼합되어 사용 됨
String str=(String)name.get(0); // Object 형이므로, 다운캐스팅이 필요하다.
제너릭 클래스 : 컬렉션 클래스에서 사용되는 JDK5.0에서 새롭게 나온 개념
하나의 클래스가 알고리즘을 적용받을 수 있는 원소의 자료형을 다양하게 하기 위해서
제너릭 클래스란 개념을 5.0에서 가져다 사용
제너릭 클래스는 로직만 구현하고 원소들의 자료형태에 대해서는 언급하지 않음
객체를 생성할 때에는 자료형을 언급해야 함.
ArrayList<Integer> []s=new ArrayList<Integer>(); // 원소 : Integer
ArrayList<String> []name=new ArrayList<String>(); // 원소 : String
name.add("조현상");
name.add(10); // 에러 남 : 원소의 자료형이 혼합되어 사용되지 못함
String str=name.get(0); // 다운캐스팅이 필요없다.*/
// 문자를 가져다가 대문자로 출력하기
package training;
import java.util.ArrayList;
public class Ex01 {
public static void main(String[] args) {
// JDK 1.4에서 사용되던 컬렉션 클래스
ArrayList list = new ArrayList();
list.add("apple"); // 내부적으로 저장될때에는 Object 형으로 업캐스팅됨
list.add("banana");
list.add("orange");
list.add("3"); // 단점 : 원소들의 자료형이 혼합되어 사용
// list에 저장된 원소들을 갖다가 대문자로 출력하기
for(int i=0;i<list.size();i++){
System.out.println(list.get(i)+" ");
// 대문자로 변환하기 위한 메소드로 toUpperCase가
// String 클래스에서 제공된다.
// 단점 : 다운 캐스팅을 위해 캐스트 연산자를 기술해야 한다.
String item=(String)list.get(i);
System.out.println(item.toUpperCase());
}
}
}
===============점수 5개로 총점과 평균을 구하기 1. 배열 ==============================
// 배열 : 배열의 크기가 변경되지 않는다. 배열에 원소를 추가하거나 삭제할 수 없다.
// ArrayList : 배열의 크기가 변경 되고 배열에 원소를 추가하거나 삭제할 수 있다.
public class Ex03 {
public static void main(String[] args) {
int [] a={90, 85, 70, 80, 95};
int tot=0;
for(int i=0;i<a.length;i++){
System.out.println(a[i] + " ");
tot+=a[i];
}
System.out.println("\n 총점 : " + tot);
System.out.println("\n 평균 : " + tot/a.length);
}
}
===============점수 5개로 총점과 평균을 구하기 2. ArrayList===========================
import java.util.ArrayList;
public class Ex04 {
public static void main(String[] args) {
ArrayList list=new ArrayList();
System.out.println("원소의 갯수 : "+list.size());
list.add(90);
list.add(85);
list.add(70);
list.add(80);
list.add(95);
System.out.println("원소의 갯수 : "+list.size());
int tot=0;
for(int i=0;i<list.size();i++){
System.out.println(list.get(i) + " ");
tot=tot+(Integer)list.get(i);
// tot=tot+list.get(i);
}
System.out.println("\n 총점 : " + tot);
System.out.println("\n 평균 : " + tot/list.size());
}
}
===================================================================================
package training;
import java.util.ArrayList;
public class Ex01 {
public static void main(String[] args) {
// JDK 1.4에서 사용되던 컬렉션 클래스
ArrayList list = new ArrayList();
list.add("apple"); // 내부적으로 저장될때에는 Object 형으로 업캐스팅됨
list.add("banana");
list.add("orange");
list.add("3"); // 단점 : 원소들의 자료형이 혼합되어 사용
// list에 저장된 원소들을 갖다가 대문자로 출력하기
for(int i=0;i<list.size();i++){
System.out.println(list.get(i)+" ");
// 대문자로 변환하기 위한 메소드로 toUpperCase가
// String 클래스에서 제공된다.
// 단점 : 다운 캐스팅을 위해 캐스트 연산자를 기술해야 한다.
String item=(String)list.get(i);
System.out.println(item.toUpperCase());
}
}
}
===================================================================================
package training;
import java.util.ArrayList;
public class Ex02 {
public static void main(String[] args) {
// 단점 : 원소들의 자료형이 혼합되어 사용되지 않도록
// 단점 : 다운 캐스팅하지 않도록
// JDK5.0부터 컬렉션 클래스를 제너릭 클래스 형태로 제공
// 객체 생성 시, 원소의 자료형들을 결정하기
// 제너릭_컬렉션 클래스 <원소의 자료형>
ArrayList<String> list = new ArrayList<String>();
list.add("apple");
list.add("banana");
list.add("orange");
// list.add(3); // 원소들의 자료형이 혼합되어 사용되지 않도록
for(int i=0;i<list.size();i++){
System.out.println(list.get(i)+" ");
String item=list.get(i);
// String형으로 다운캐스팅 하지 않아도 된다.
System.out.println(item.toUpperCase());
}
}
}
===================================================================================
package training;
import java.util.Enumeration; // import를 하기 위해서 <ctrl>+<shift>+o(영문)
import java.util.Hashtable;
public class Ex03 {
public static void main(String[] args) {
// key, value를 쌍으로 저장하는 해쉬 테이블
// "이강국" 65.5
Hashtable<String, Double>ht=new Hashtable<String, Double>();
ht.put("이강국", 63.5);
ht.put("김재필", 68.5);
ht.put("김경윤", 70.5);
System.out.println(ht.get("이강국"));
// 해쉬 테이블에 저장된 모든 정보를 얻어오기
Enumeration<String> name=ht.keys();
while(name.hasMoreElements()){
String key=name.nextElement();
Double weight=ht.get(key);
System.out.println(key + " : " + weight);
}
}
}
===================================================================================
'수업 > 자바2JDK입문' 카테고리의 다른 글
Part 6. AWT - II 컴포넌트의 이벤트 처리(1) (0) | 2008.08.23 |
---|---|
Part 6. AWT - I AWT를 이용한 GUI 작성 (0) | 2008.08.21 |
Part 5. 자바에서 자주 사용되는 클래스 III - 문자열 관련 클래스 (0) | 2008.08.19 |
Part 5. 자바에서 자주 사용되는 클래스 II - Wrapper 클래스 (0) | 2008.08.19 |
Part 5. 자바에서 자주 사용되는 클래스 I Object 클래스 (0) | 2008.08.14 |