Java collection Framework
- 자료를 모아서 저장할 수 있는 클래스 및 인터페이스
List 인터페이스
- 중복을 허용하면서 저장순서가 유지되는 컬렉션을 구현하는데 사용
- 순서(Index)가 있다. 인덱스는 0부터 시작
- Vector, ArrayList 등
Set 인터페이스
- 중복을 허용하지 않고 저장순서가 유지되지 않는 컬렉션 클래스를 구현하는데 사용
- 순서가 없다
- HashSet, TreeSet 등
Map 인터페이스
- 키(Key)와 값(Value)을 하나의 쌍으로 묶어서 저장하는 컬렉션 클래스를 구현하는데 사용
키는 중복될 수 없지만 값은 중복을 허용, 기존에 저장된 데이터와 중복된 키와 값을 저장하면 기존의 값은 없어지고 마지막에 저장된 값이 남게된다
- 순서가 없다. Key와 Value로 구성되어 있다
- HashMap, Properties 등
[ 형식 ]
interface List {}
class Vector implements List {}
class ArrayList implements List {}
interface Set {}
class HashSet implements Set {}
interface Map {}
class HashMap implements Map {}
class Properties implements Map {}
//다형성
List list=new Vector()
List list=new ArrayList()
Set set=new HashSet()
Map map=new HashMap()
[ List ]
//1. List 계열
//<E> Element 요소
Vector vec=new Vector();
vec.add(3);
vec.add(2.4);
vec.add('R');
vec.add("KOREA");
vec.add(new Integer(5));
vec.add(new Double(6.7));
//Integer inte=new Integer(5) Old Version
//Integer inte=5 new Version
System.out.println(vec.size()); //6 요소의 갯수
for(int i=0; i<vec.size(); i++){
System.out.println(vec.get(i));
}//for end
vec.remove(0); //0번째 요소 제거하기
System.out.println(vec.size());
vec.removeAllElements(); //vec요소 전부 제거하기
System.out.println(vec.size()); //0
if(vec.isEmpty()) {//요소의 갯수가 0개 인지?
System.out.println("비어 있다");
}else {
System.out.println("비어 있지 않다");
}//if end
//////////////////////////////////////////////////
List list=new ArrayList();
list.add(5);
list.add(6.7);
list.add('M');
list.add("SEOUL");
System.out.println(list.size()); //4
//문) remove() 이용해서 list 요소를 전부 삭제하시오
for(int i=list.size()-1; i>=0; i--) {
list.remove(i);
}//for end
System.out.println(list.size()); //0
[ Set ]
//2. Set 계열 : 순서가 없다
Set set=new HashSet();
set.add(3);
set.add(2.4);
set.add('R');
set.add("BUSAN");
set.add(new Integer(7));
System.out.println(set.size());
//cursor : 가리킬 요소가 있으면 true, 없으면 false 값 반환
//cursor를 이용해서 요소를 접근하는 경우
Iterator iter=set.iterator();
while(iter.hasNext()) { //다음 cursor가 있는지?
//cursor가 가리키는 요소 가져오기
Object obj=iter.next();
System.out.println(obj);
}//while end
[ Map ]
//3. Map 계열 : 순서가 없다
-> Key : 이름표
-> Value : 값
->JSON, 파이선(딕셔너리), NoSQL 등에서 많이 사용하는 문법
HashMap map=new HashMap();
map.put("one", 3);
map.put("two", 2.4);
map.put("three", 'R');
map.put("four", "손흥민");
System.out.println(map.size());
System.out.println(map.get("four"));
map.put("four", "박지성");
System.out.println(map.get("four"));
///////////////////////////////////////////////
//Properties 클래스
Properties db=new Properties();
db.put("url", "http://localhost:1521");
db.put("username", "itwill");
db.put("password", "12341234");
System.out.println(db.get("url"));
System.out.println(db.get("username"));
System.out.println(db.get("password"));
[ 활용 문제 ]
문제) = 문자를 기준으로 문자열을 분리해서
= 앞의 문자열은 key, = 뒤의 문자열은 value로 구분해서 hm에 저장하고
hm의 key값들 중에서 "read.do"를 호출하면
value값으로 net.bbs.Read 출력하시오
HashSet command=new HashSet();
command.add("list.do=net.bbs.List");
command.add("read.do=net.bbs.Read");
command.add("write.do=net.bbs.Write");
System.out.println(command.size()); //3
HashMap hm=new HashMap();
//1) 커서 생성하기
Iterator cursor=command.iterator();
//2) 커서가 있을때까지 반복
while(cursor.hasNext()) {
//3) 커서가 가리키는 요소를 가져와서 문자열 형변환
Object obj=cursor.next();
String line=(String)obj; //다형성
//System.out.println(line);
//4) "=" 위치를 기준으로 문자열 분리하기
//-> split(), substring(), StringTokenizer클래스
String[] word=line.split("=");
String key=word[0]; // "=" 앞 문자열
String value=word[1]; // "=" 뒤 문자열
System.out.println(key);
System.out.println(value);
//5) hm에 저장하기
hm.put(key, value);
}//while end
//결과값
System.out.println(hm.get("read.do")); //net.bbs.Read
'Backend > JAVA' 카테고리의 다른 글
[JAVA] 상품 구매 및 반품 프로그램 (0) | 2023.03.26 |
---|---|
[JAVA] Generics (0) | 2023.03.26 |
[JAVA] 예외처리 Exception : try - catch문, finally, throws (0) | 2023.03.21 |
[JAVA] 내부클래스 inner class (0) | 2023.03.21 |
[JAVA] 익명 내부 객체 Anonymous class (0) | 2023.03.21 |