자바 Day 16

Hyunsu·2023년 4월 9일
0

Today I Learned

목록 보기
16/37
post-thumbnail

📝 목차

Chapter 15 컬렉션


Chapter 15 컬렉션

컬렉션

데이터를 수집하고 관리해주는 객체로 가변길이 배열이라고 할 수 있다.
가장 대표적으로 List 와 Set 과 Map 컬렉션이 있다.

List

가장 많이 사용되는 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());
		}
	}
    
}

Set

가장 많이 사용되는 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 ( ) 반복자를 사용하는 방법이 있다.

Map

가장 많이 사용되는 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());
	}
    
}

Reference

profile
현수의 개발 저장소

0개의 댓글