-
Chapter 15 컬렉션 프레임워크 확인문제 정답프로그래밍 언어/이것이 자바다 2022. 1. 19. 00:33
1. 자바의 컬렉션 프레임워크에 대한 설명으로 틀린 것은 무엇입니까?
① List 컬렉션은 인덱스로 객체를 관리하며 중복 저장을 허용한다.
② Set 컬렉션은 순서를 유지하지 않으며 중복 저장을 허용하지 않는다.
③ Map 컬렉션은 키와 값으로 구성된 Map.Entry를 저장한다.
④ Stack은 FIFO(선입선출) 자료구조를 구현한 클래스이다.
2. List 컬렉션에 대한 설명 중 틀린 것은 무엇입니까?
① 대표적인 구현 클래스로는 ArrayList, Vector, LinkedList가 있다.
② 멀티 스레드 환경에서는 ArrayList보다는 Vector가 스레드에 안전하다.
③ ArrayList에서 객체를 삭제하면 삭제된 위치는 비어 있게 된다.
④ 중간 위치에 객체를 빈번히 삽입하거나 제거할 경우 LinkedList를 사용하는 것이 좋다.
3. Set 컬렉션에 대한 설명 중 틀린 것은 무엇입니까?
① 대표적인 구현 클래스로는 HashSet, LinkedHashSet, TreeSet이 있다.
② Set 컬렉션에서 객체를 하나씩 꺼내오고 싶다면 Iterator를 이용한다.
③ HashSet은 hashCode()와 equals()를 이용해서 중복된 객체를 판별한다.
④ Set 컬렉션에는 null을 저장할 수 없다.
4. Map 컬렉션에 대한 설명 중 틀린 것은 무엇입니까?
① 대표적인 구현 클래스로는 HashMap, Hashtable, TreeMap, Properties가 있다.
② HashMap과 Hashtable은 hashCode()와 equals를 이용해서 중복 키를 판별한다.
③ 멀티 스레드 환경에서는 Hashtable보다는 HashMap이 스레드에 안전하다.
④ Properties는 키와 값이 모두 String 타입이다.
5. 단일(싱글) 스레드 환경에서 Board 객체를 저장 순서에 맞게 읽고 싶습니다. 가장 적합한 컬렉션을 생성하도록 밑줄 친 부분에 코드를 작성해보세요.
List<Board> 변수 = new ArrayList<>();
6. 단일(싱글) 스레드 환경에서 학번(String)을 키로, 점수(Integer)를 값으로 저장하는 가장 적합한 컬렉션을 생성하도록 밑줄 친 부분에 코드를 작성해보세요.
Map<String, Integer> 변수 = new HashMap<>();
7. BoardDAO 객체의 getBoardList() 메소드를 호출하면 List<Board> 타입의 컬렉션을 리턴합니다. ListExample 클래스를 실행시켰을 때 다음과 같이 출력될 수 있도록 BoardDAO의 getBoardList() 메소드를 작성해보세요.
import java.util.List; public class ListExample { public static void main(String[] args) { BoardDAO dao = new BoardDAO(); List<Board> list = dao.getBoardList(); for(Board board : list) { System.out.println(board.getTitle() + "-" + board.getContent()); } } }
public class Board { private String title; private String content; public Board(String title, String content) { this.title = title; this.content = content; } public String getTitle() { return title; } public String getContent() { return content; } }
import java.util.ArrayList; import java.util.List; public class BoardDAO { public List<Board> getBoardList() { List<Board> list = new ArrayList<>(); list.add(new Board("제목1", "내용1")); list.add(new Board("제목2", "내용2")); list.add(new Board("제목3", "내용3")); return list; } }
8. HashSet에 Student 객체를 저장하려고 합니다. 학번이 같으면 동일한 Student라고 가정하고 중복 저장이 되지 않도록 하고 싶습니다. Student 클래스에서 재정의해야 하는 hashCode()와 equals() 메소드의 내용을 채워보세요. Student의 해시코드는 학번이라고 가정합니다.
import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class HashSetExample { public static void main(String[] args) { Set<Student> set = new HashSet<>(); set.add(new Student(1, "홍길동")); set.add(new Student(2, "신용권")); set.add(new Student(1, "조민우")); Iterator<Student> iterator = set.iterator(); while(iterator.hasNext()) { Student student = iterator.next(); System.out.println(student.studentNum + ":" + student.name); } } }
public class Student { public int studentNum; public String name; public Student(int studentNum, String name) { this.studentNum = studentNum; this.name = name; } @Override public int hashCode() { return studentNum; } @Override public boolean equals(Object obj) { if(!(obj instanceof Student)) return false; Student student = (Student) obj; if(studentNum != student.studentNum) return false; return true; } }
9. HashMap에 아이디(String)와 점수(Integer)가 저장되어 있습니다. 실행 결과와 같이 평균 점수를 출력하고, 최고 점수와 최고 점수를 받은 아이디를 출력해보세요.
import java.util.HashMap; import java.util.Map; import java.util.Set; public class MapExample { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("blue", 96); map.put("hong", 86); map.put("white", 92); String name = null; int maxScore = 0; int totalScore = 0; Set<Map.Entry<String, Integer>> entrySet = map.entrySet(); for(Map.Entry<String, Integer> entry : entrySet) { if(entry.getValue() > maxScore) { name = entry.getKey(); maxScore = entry.getValue(); } totalScore += entry.getValue(); } int avgScore = totalScore / map.size(); System.out.println("평균 점수: " + avgScore); System.out.println("최고 점수: " + maxScore); System.out.println("최고 점수를 받은 아이디: " + name); } }
10. TreeSet에 Student 객체를 저장하려고 합니다. Student의 score 필드값으로 자동 정렬하도록 구현하고 싶습니다. TreeSet의 last() 메소드를 호출했을 때 가장 높은 score의 Student 객체가 리턴되도록 Student 클래스를 완성해보세요.
import java.util.TreeSet; public class TreeSetExample { public static void main(String[] args) { TreeSet<Student> treeSet = new TreeSet<>(); treeSet.add(new Student("blue", 96)); treeSet.add(new Student("hong", 86)); treeSet.add(new Student("white", 92)); Student student = treeSet.last(); System.out.println("최고점수: " + student.score); System.out.println("최고점수를 받은 아이디: " + student.id); } }
public class Student implements Comparable<Student> { public String id; public int score; public Student(String id, int score) { this.id = id; this.score = score; } @Override public int compareTo(Student o) { if(score<o.score) return -1; else if(score == o.score) return 0; else return 1; } }
'프로그래밍 언어 > 이것이 자바다' 카테고리의 다른 글
Chapter 14 람다식 확인문제 정답 (0) 2022.01.15 Chapter 13 제네릭 확인문제 정답 (0) 2022.01.05 Chapter 12 멀티 스레드 확인문제 정답 (0) 2022.01.02 Chapter 11 기본 API 클래스 확인문제 정답 (0) 2021.12.26 Chapter 10 예외 처리 확인문제 정답 (0) 2021.12.13