💡
컬렉션에 관한 설명으로 틀린것은?
[정답] ④ 배열처럼 저장하는 요소의 개수가 고정되어 있다.
[해설]
(p391) 배열이 가진 고정 크기의 단점을 극복하기 위해 객체들을 쉽게 삽입, 삭제, 검색할 수 있는 가변 크기의 컨테이너가 컬렉션입니다.
💡
다음 빈칸에 적절한 단어를 기입하라.
클래스, 인터페이스, 메소드를 특정 타입에 종속되지 않게 ______ 시켜 작성하는 기술을 ______이라 한다. Vector<E>에서 E는 제네릭 타입 혹은 ______라고 부른다. E에 Integer 등과 같이 객체 타입을 지정하여 특정 타입의 데이터만 다루도록 만드는 작업을 ______라고 한다. 제네릭 기능은 C++에서 먼저 만들어졌으며 C++에서는 ______이라고 부른다.
[정답] 일반화, 제네릭, 타입 매개변수, 구체화, 템플릿
💡
다음 코드에 대한 설명으로 틀린 것은?
Vector<Integer> v = new Vector<Integer>(30);
[정답] ② 벡터 v는 원소를 30개만 저장할 수 있는 벡터이다.
[해설]
(p395) 뒤의 숫자는 초기 용량을 설정합니다. 벡터의 삽입되는 요소의 개수에 따라 자동의 크기를 조절하고, 요소의 삽입과 삭제에 따라 자동으로 요소들의 자리를 이동합니다.
💡
다음 물음에 적합한 코드를 간단히 작성하라.
(1) 문자열만 저장할 수 있는 벡터 sv 생성
(2) '키'가 문자열이고 '값'이 실수인 해시맵 h 생성
(3) Person 타입의 객체를 10개 저장할 공간을 갖춘 ArrayList 컬렉션 pa 생성
(4) 나라 이름과 인구를 저장하고 관리하는 해시맵 pop 생성
[정답]
(1)
Vector<String> sv = new Vector<String>();
(2)
HashMap<String, Double> h = new HashMap<String, Double>();
(3)
ArrayList<Person> pa = new ArrayList<Person>(10);
(4)
HashMap<String, Integer> pop new HashMap<String, Integer>();
💡
다음 코드에서 맞는 것은?
[정답] ① Stack<String> ss;
[해설]
② 구체적인 타입이 지정되지 않았습니다.
③ HashMap은 HashMap<K, M>과 같이 키와 값 형태로 저장되어야합니다.
④ Set은 인터페이스로 객체를 생성할 수 없습니다.
💡
다음 코드에서 자동 박싱과 자동 언박싱이 일어나는 곳을 지적하라.
Vector<Double> v = new Vector<Double>();
v.add(3.14); // 자동 박싱
double d = v.get(0); // 자동 언박싱
[정답]
v.add(3.14); - 작동 방식
double d = v.get(0); - 자동 언박싱
💡
다음 프로그램은 초기에 벡터의 크기를 3으로 설정하였다. for 문을 실행하고 벗어났을 때 벡터의 용량이 어떻게 변했는지 확인하라. 벡터는 용량이 모자랄 때, 한 번에 얼마만큼씩 용량을 늘리는가?
Vector<Integer> v = new Vector<Integer>(3); //현재 벡터 용량은 3
for(int i=0; i<10; i++) v.add(i); // 정수를 10개 벡터에 삽입
System.out.println(v.capacity)); // 벡터에 변한 용량은 얼마?
[정답] 12
💡
주석문을 참고하여 빈칸에 적절한 코드로 채워라.
[정답]
ArrayList<String> a = new ArrayList<String>(10);
a.add("Java");
a.add(0, "C++");
a.size();
a.remove(a.size()-1);
💡
다음에서 밑줄친 부분과 동일하게 작동하도록 Iterator를 이용하여 다시 작성하라.
Vector<Integer> v = new Vector<Integer>(3);
for(int i=0; i<10; i++) v.add(i);
for(int i=0; i<v.size(); i++)
System.out.print(v.get(i)+" ");
[정답]
Iterator<Integer> it = v.Iterator();
while(it.hasNext())
System.out.print(it.next()+" ");
💡
다음은 해시맵 h를 만들고, func(h) 메소드를 호출하여 h에 들어 있는 원소의 개수를 리턴받아 출력하는 코드이다. func() 메소드를 작성하라.
HashMap<String, Integer> h = new HashMap<String, Integer>();
h.put("a", 10);
h.put("b", 10);
System.out.println(func(h)); // 해시맵 h에 들어 있는 원소 개수 출력
[정답]
public int func(HashMap<String, Integer> h) {
return h.size();
}
💡
다음 제네릭 클래스에 대해 아래 문항에 답하라.
class JGeneric<W> {
private W x, y;
public JGeneric(W w, W y) { this.x = x; this.y = y; }
___________
}
(1) JGeneric의 타입 매개변수는 몇 개이며, 무엇인가?
(2) String으로 구체화한 JGeneric 객체를 생성하는 코드를 작성하라.
(3) 첫 번째 값 x를 리턴하는 메소드 first()를 작성하라.
(4) 두 번째 값 y를 리턴하는 메소드 second()를 작성하라.
(5) equal() 메소드를 작성하라. equal()는 필드 x와 y를 비교하여 같으면 true, 아니면 false를 리턴한다.
(6) <W>를 String으로 구체화한 JGeneric 객체를 활용하는 예를 들어라.
[정답]
(1) 1개, W
(2)
JGeneric<String> js = new JGeneric<String>("hello", "hellw");
(3)
public w first() { return x; }
(4)
public w secon() { return y; }
(5)
public boolean equal() { return x.equals(y); }
(6)
System.out.println(js.first())
System.out.println(js.second())
System.out.println(js.equal())
💡
다음 질문에 답하라.
class JClass {
static String take(String s[], int index) {
if(index > s.length) {
System.out.println("인덱스가 범위를 벗어났습니다.");
return null;
}
return s[index];
}
}
(1) JClass의 take() 메소드는 무엇을 처리하는 코드인가?
(2) JClass의 take() 메소드가 임의의 타입에 대해 동작하도록 제네릭 메소드로 수정하여 JGenClass를 작성하라.
[정답]
(1) s 배열의 index번째 값을 리턴한다. index가 s 배열의 길이보다 크면 null을 리턴한다.
(2)
Class JClass {
static <T> T take(T s[], int index) {
if(index > s.length) {
System.out.println("인덱스가 범위를 벗어났습니다.");
return null;
}
return s[index];
}
}
'대학교 > 명품 Java programming 문제' 카테고리의 다른 글
[Java] 명품 Java Programming 7장 연습 문제 풀이 해설 (실습 문제) (2) | 2024.06.05 |
---|---|
[Java] 명품 Java Programming 6장 연습 문제 풀이 해설 (실습 문제) (0) | 2024.05.25 |
[Java] 명품 Java Programming 6장 연습 문제 풀이 해설 (이론 문제) (0) | 2024.05.24 |
[Java] 명품 Java Programming 5장 연습 문제 풀이 해설 (실습 문제) (0) | 2024.05.22 |
[Java] 명품 Java Programming 5장 연습 문제 풀이 해설 (이론 문제) (0) | 2024.05.21 |