본문 바로가기
Programming Study/명품자바프로그래밍

[명품자바프로그래밍] 7장 실습문제(2)

by 푸고배 2018. 9. 26.

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

반응형

댓글