7. 아래의 HV 클래스는 해시맵을 인자로 받아 벡터를 리턴하는 hashToVector() 메소드를 가지고 있다. 이 메소드는 해시맵 내의 '값(Value)'을 모두 Vector<String>에 삽입하여 리턴한다. hashToVector()를 작성하라.
import java.util.*;
class HV {
Public static Vecter<String> hashToVecter(HashMap<String, String> h) {
..............................................
.............................................. // 여기를 작성하라.
}
public static void main(String[] args) {
HashMap<String, String> h = new Hash<String, String>();
h.put("범죄", "112");
h.put("화재", "119");
h.put("전화번호", "114);
Vector<String> v = HV.hashToVector(h);
for(int n=0;n<v.size();n++)
System.out.println(v.get(n));
}
}
<소스코드> Chapter7_7.java
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Vector;
public class Chapter7_7 {
public static Vector<String> hashToVector(HashMap<String, String> h){
Vector<String> value = new Vector<String>();
Iterator<String> it = h.keySet().iterator();
while(it.hasNext()){
value.add(h.get(it.next()));
}
return value;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<String, String> h = new HashMap<String, String>();
h.put("범죄", "112");
h.put("화재", "119");
h.put("전화번호", "114");
Vector<String> v = Chapter7_7.hashToVector(h);
for(int n=0;n<v.size();n++)
System.out.println(v.get(n));
}
}
8. 다음은 String만 다루는 MyClass 코드이다. MyClass를 제네릭 클래스 MyClass<E>로 일반화하고, 이를 이용하는 main() 메소드를 만들어 프로그램을 완성하라.
public class MyClass {private String s;public myClass(String s) {this.s = s;}void setS(String s) {this.s = s;}String getS() {return s;}}
<소스코드> Chapter7_8.java
public class Chapter7_8<E> {
private E e;
public Chapter7_8(E e){
this.e = e;
}
void setS(E e){
this.e = e;
}
E getS(){
return e;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Chapter7_8<String> s = new Chapter7_8<String>("정수현");
Chapter7_8<Integer> i = new Chapter7_8<Integer>(20153031);
System.out.println(s.getS());
System.out.println(i.getS());
i.setS(20173031);
System.out.println(i.getS());
}
}
9. 하나의 학생 정보는 Student 클래스로 표현한다. Student 클래스에는 이름, 학과, 학번, 학점 평균을 나타내는 필드가 있다. 여기서 학번을 String 타입으로 선언한다. 키보드에서 학생 정보를 5개 입력받아 학번을 '키'로 하여 HashMap<String, Student>에 저장하고 학번으로 학생 정보를 검색하여 출력하는 프로그램을 작성하라. 다음과 같은 해시맵을 이용하라.
HashMap<String, Student> dept = new HashMap<String, Student>();
<소스코드> Chapter7_9.java
import java.util.HashMap;
import java.util.Scanner;
class Student2{
String name;
String department;
String classnum;
double averscore;
}
public class Chapter7_9 {
public static void main(String[] args) {
HashMap<String, Student2> dept = new HashMap<String, Student2>();
Scanner sc = new Scanner(System.in);
for(int i=0; i<3;i++){
Student2 st = new Student2();
System.out.print("이름을 입력하시오 : ");
st.name = sc.next();
System.out.print("학과를 입력하시오 : ");
st.department = sc.next();
System.out.print("학번을 입력하시오 : ");
st.classnum = sc.next();
System.out.print("학점평균을 입력하시오 : ");
st.averscore = sc.nextDouble();
System.out.println();
dept.put(st.classnum, st);
}
System.out.print("학번을 입력하시오 : ");
Student2 st = dept.get(sc.next());
System.out.println("이름 : "+st.name);
System.out.println("학과 : "+st.department);
System.out.println("학번 : "+st.classnum);
System.out.println("학점평균 : "+st.averscore);
}
}
10. 지명과 위치 정보를 저장하고 관리하고자 한다. 지명은 String 타입으로, 위치 정보를 위도와 경도를 가진 Location이라는 클래스로 선언하고, 지명을 '키'로 하여 HashMap<String, Location>에 키보드로 입력받아 5개의 요소를 저장하고, 지명으로 검색하는 프로그램을 작성하라.
<소스코드> Chapter7_10java
import java.util.HashMap;
import java.util.Scanner;
class Location{
String region; // 지역
String latitude; // 위도
String hardness; // 경도
}
public class Chapter7_10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<String, Location> area = new HashMap<String, Location>();
Scanner sc = new Scanner(System.in);
for(int i=0;i<5;i++){
Location l = new Location();
System.out.print("지역명을 입력하시오 : ");
l.region = sc.next();
System.out.print("위도를 입력하시오 : ");
l.latitude = sc.next();
System.out.print("경도를 입력하시오 : ");
l.hardness = sc.next();
System.out.println();
area.put(l.region, l);
}
System.out.print("지역명을 입력하시오 : ");
Location l = area.get(sc.next());
System.out.println("지역명 : " + l.region);
System.out.println("위도 : " + l.latitude);
System.out.println("경도 : " + l.hardness);
}
}
11. 다음과 같이 선언한 Stack 인터페이스가 있다.
interface Stack<T> {T pop();
boolean push(T ob);
}
LinkedList 자료 구조를 이용하여 Stack<T> 인터페이스를 구현(implements)하는 MyStact<T> 클래스를 작성하라. 그리고 MyStack<T>의 제네릭 타입 T를 Integer타입으로 구체화한 정수 트랙을 생성하여 정수를 push하고 pop하는 프로그램을 작성하라.
<소스코드> Chapter7_11.java
import java.util.Vector;
class MyStack<T>{
Vector<T> v = new Vector();
void push(T t){
v.add(t);
}
T pop(){
return v.remove(v.size()-1);
}
void display(){
for(int i=0;i<v.size();i++){
System.out.print(v.get(i) +" ");
}
System.out.println();
}
}
public class Chapter7_11 {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyStack m = new MyStack();
m.push(10);
m.push(20);
m.push(30);
m.display();
m.push(40);
m.push(50);
m.display();
m.pop();
m.display();
}
}
참고자료 : 생능출판 명품 JAVA Programming
github 주소 :
https://github.com/ch1517/Masterwork-JAVA-Programming/tree/master/Chapter7/Chapter7
'Programming Study > 명품자바프로그래밍' 카테고리의 다른 글
[명품자바프로그래밍] 8장 실습문제(1) (0) | 2018.09.27 |
---|---|
[명품자바프로그래밍] 7장 Open Challenge (0) | 2018.09.27 |
[명품자바프로그래밍] 7장 실습문제(1) (0) | 2018.09.26 |
[명품자바프로그래밍] 6장 Open Challenge (0) | 2018.09.26 |
[명품자바프로그래밍] 6장 실습문제(2) (0) | 2018.09.20 |
댓글