Chapter 15 컬렉션
데이터를 수집하고 관리해주는 객체로 가변길이 배열이라고 할 수 있다.
가장 대표적으로 List 와 Set 과 Map 컬렉션이 있다.
가장 많이 사용되는 ArrayList 는 제한 없이 객체를 추가할 수 있는 배열이다.
중복 저장이 가능하며 순서가 있다.
public class ArrayListExample {
public static void main(String[] args) {
// ArrayList 컬렉션 생성
List<Board> list = new ArrayList<>();
// 객체 추가
list.add(new Board("제목1", "내용1", "글쓴이1"));
list.add(new Board("제목2", "내용2", "글쓴이2"));
list.add(new Board("제목3", "내용3", "글쓴이3"));
list.add(new Board("제목4", "내용4", "글쓴이4"));
list.add(new Board("제목5", "내용5", "글쓴이5"));
// 저장된 총 객체 수 얻기
System.out.println("총 객체수 : " + list.size());
// 특정 인덱스의 객체 가져오기
Board board = list.get(2);
System.out.println(board.getSubject() + "\t" + board.getContent() + "\t" + board.getWriter());
// 모든 객체를 하나씩 가져오기
for(int i=0; i<list.size(); i++) {
Board b = list.get(i);
System.out.println(b.getSubject() + "\t" + b.getContent() + "\t" + b.getWriter());
}
// 객체 삭제
list.remove(2);
// 향상된 for 문으로 모든 객체를 하나씩 가져오기
for(Board b : list) {
System.out.println(b.getSubject() + "\t" + b.getContent() + "\t" + b.getWriter());
}
}
}
가장 많이 사용되는 HashSet 은 동등 객체의 경우 중복 저장이 불가능하다.
동등 객체란 hashCode ( ) 값이 동일하고 equals ( ) 반환값이 true 인 객체이다.
public class HashSetExample {
public static void main(String[] args) {
// HashSet 컬렉션 생성
Set<String> set = new HashSet<>();
// 객체 추가
set.add("Java");
set.add("JDBC");
set.add("JSP");
set.add("Spring");
// 객체를 하나씩 가져와서 처리
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()) {
String s = iterator.next();
System.out.println(s);
if(s.equals("JSP")) {
iterator.remove();
}
}
System.out.println();
// 객체 제거
set.remove("JDBC");
// 객체를 하나씩 가져와서 처리
for(String s : set) {
System.out.println(s);
}
}
}
Set 의 경우 객체를 한 개씩 반복해서 가져와야 한다.
위와 같이 for 문을 사용하는 방법과 iterator ( ) 반복자를 사용하는 방법이 있다.
가장 많이 사용되는 HashMap 은 키와 값으로 구성된 엔트리 객체를 저장한다.
키는 중복 저장이 불가능하지만 값은 중복 저장이 가능하다. 즉 새로운 값으로 대체된다.
public class HashMapExample {
public static void main(String[] args) {
// Map 컬렉션 생성
Map<String, Integer> map = new HashMap<>();
// 객체 저장
map.put("신용권", 85);
map.put("홍길동", 90);
map.put("동장군", 80);
map.put("홍길동", 95);
System.out.println("총 Entry 수 : " + map.size());
// 키로 값 얻기
String key = "홍길동";
int value = map.get(key);
System.out.println(key + " : " + value);
// 키 Set 컬렉션을 얻고 반복해서 키와 값을 얻기
Set<String> keySet = map.keySet();
Iterator<String> iterator = keySet.iterator();
while(iterator.hasNext()) {
String k = iterator.next();
Integer v = map.get(k);
System.out.println(k + " : " + v);
}
// 엔트리 Set 컬렉션을 얻고 반복해서 키와 값을 얻기
Set<Entry<String, Integer>> entrySet = map.entrySet();
Iterator<Entry<String, Integer>> entryIterator = entrySet.iterator();
while(entryIterator.hasNext()) {
Entry<String, Integer> entry = entryIterator.next();
String entryKey = entry.getKey();
Integer entryValue = entry.getValue();
System.out.println(entryKey + " : " + entryValue);
}
// 키로 엔트리 삭제
map.remove("홍길동");
System.out.println("총 Entry 수 : " + map.size());
}
}