본문 바로가기

Language/JAVA

[JAVA] 명품 자바 에센셜 예제 7장

 

예제 7-1 : 정수만 다루는 Vector<Integer> 컬렉션 활용
문제: 정수만 다루는 Vector<Integer> 제네릭 벡터를 생성하고 활용하는 사례를 보인다. 다음 코드에 대한 결과는 무엇인가?

package chap07;

import java.util.Vector;
//정수만다루는 Vector<Integer> 제네릭 벡터를 생성하고 활용하는 사례를 보인다 . 다음 코드에 대한 결과는 무엇인가
public class VectorEx{
	public static void main(String[] args) {
		Vector<Integer> v=new Vector<Integer>();
		v.add(5);
		v.add(-3);
		v.add(-1);
		
		for(int i=0;i<v.size();i++) {
			System.out.print(v.get(i));
		}
		System.out.println();
		
		//벡터 속 모든 정수 더하기
		int sum=0;
		for(int i=0;i<v.size();i++) {
			sum+=v.get(i);
		}
		System.out.println(sum);
	}
	
}
//출력결과
벡터 내의 요소 객체 수 : 4
벡터의 현재 용량 : 10
5
4
100
-1
벡터에 있는 정수 합 : 108

 

예제 7-2 : Point클래스의 객체들만 저장하는 벡터 만들기
문제: 점(x,y)를 표현하는 Point 클래스의 객체만 다루는 벡터의 활용을 보여라.

package chap07;

import java.util.Vector;
//점(x,y)를 표현하는 point클래스의 객체만 다루는 벡터의 활용을 보여라.
class Point{
	private int x,y;
	public Point(int x,int y) {
		this.x=x;
		this.y=y;
	}
	
	public String toString() {
		return ("("+x+","+y+")");
	}
}

public class PointVectorEx {

	public static void main(String[] args) {
		Vector<Point> v=new Vector<Point>();
		v.add(new Point(3,5));
		v.add(new Point(2,20));
		
		
		for(int i=0;i<v.size();i++) {
			Point p=v.get(i);
			System.out.println(p);
		}
	}

}
(2,3)
(30,-8)

 

예제 7-3 : 문자열만 다루는 ArrayList<String> 활용
문제: 이름을 4 개 입력받아 ArrayList 에 저장하고 , ArrayList에 저장된 이름을 모두 출력한 후 제일 긴 이름을 출력하라.

package chap07;

import java.util.ArrayList;
import java.util.Scanner;
//이름을 4개 입력받아 ArrayList에 저장하고, ArrayList에 저장된 이름을 모두 출력한 후, 제일 긴 이름을 출력하라.
public class ArrayListEx {

	public static void main(String[] args) {
		ArrayList<String> array=new ArrayList<String>();
		
		Scanner sc=new Scanner(System.in);
		for(int i=0;i<4;i++) {
			System.out.println("이름을 입력하세요: ");
			String name=sc.nextLine();
			array.add(name);
		}
		
		
		int max=0;
		String[] longnames=new String[3];
		String longname="";
		for(int i=0;i<array.size();i++) {
			//길이 비교
			//길이가 같을 때는?
			if(array.get(i).length()>max) {
				longname=array.get(i);
				max=array.get(i).length();
			}else if(array.get(i).length()==max){
				longnames[i]=array.get(i);
			}
		}
		
		System.out.println("가장 길이가 긴: "+ longnames);
	}
}
이름을 입력하세요>>Mike
이름을 입력하세요>>Jane
이름을 입력하세요>>Ashley
이름을 입력하세요>>Helen
Mike Jane Ashley Helen
가장 긴 이름은 : Ashley

 

예제 7-4 : Iterator<Integer>를 이용하여 정수 벡터 검색
문제: 예제 7-1의 코드 중에서 벡터 검색 부분을 Iterator<Integer>를 이용하여 수정하라.

package chap07;

import java.util.Iterator;
import java.util.Vector;
	//예제 7-1의 코드 중에서 벡터 검색 부분을 Iterator<Integer>를 이용하여 수정하라.
public class IteratorEx {

	public static void main(String[] args) {
		Vector<Integer> v=new Vector<Integer>();
		v.add(5);
		v.add(4);
		v.add(-1);
		v.add(2,100);
		
		Iterator<Integer> it=v.iterator();
		while(it.hasNext()) {
			int n=it.next();
			System.out.println(n);
		}
		
		//Iterator를 이용하여 모든 정수 더하기
		int sum=0;
		it=v.iterator();
		while(it.hasNext()) {
			int n=it.next();
			sum+=n;
		}
		System.out.println("벡터에 있는 정수의 합: "+ sum);
		
	}

}
5
4
100
-1
벡터에 있는 정수 합 : 108

 

예제 7-5 : HashMap<String,String>로 (영어, 한글)단어 쌍을 저장하고 검색하기
문제:영어 단어와 한글 단어의 쌍을 HashMap에 저장하고 , 영어 단어로 한글 단어를 검색하는 프로그램을 작성하라.

package chap07;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;


public class HashMapDicEx {

	public static void main(String[] args) {
		//영어 단어와 한글 단어의 쌍을 저장하는 HashMap 컬렉션 생성, 영어단어로 한글 단어를 검색하는 프로그램 작성
		HashMap<String,String> dictionary=new HashMap<String,String>();
		
		dictionary.put("baby", "아기");
		dictionary.put("love", "사랑");
		dictionary.put("noteBook", "노트북");
		
		Set<String> keys=dictionary.keySet();//해시맵에 있는 모든 키를 담은 Set<K>컬렉션 리턴
	
		Iterator<String> it=keys.iterator();
		while(it.hasNext()) {
			String key=it.next();
			String value=dictionary.get(key);
			System.out.println("("+key+","+value+")");
			
		}
		System.out.println();
		
		//영어 단어를 입력받고 한글 단어 검색
		Scanner sc=new Scanner(System.in);
		for(int i=0;i<3;i++) {
			System.out.println("찾고 싶은 단어는?");
			String eng=sc.nextLine();
			String kor=dictionary.get(eng);
					
		}
	}

}
//출력결과
(love,사랑)(apple,사과)(baby,아기)
찾고 싶은 단어는?apple
사과
찾고 싶은 단어는?babo
babo는 없는 단어 입니다
찾고 싶은 단어는?love
사랑

 

예제 7-6 : 제네릭 스택 만들기
문제: 스택을 제네릭 클래스로 작성하고, String과 Integer형 스택을 사용하는 예를 보여라.

package chap07;
class GStack<T>{
	int tos;
	Object[] stck;//스택 개체
	public GStack() {
		tos=0;
		stck=new Object[10];
	}
	
	public void push(T item) {
		if(tos==10) {
			return;
		}stck[tos]=item;
		tos++;
	}
	
	public T pop() {
		if(tos==0) {
			return null;
		}
		tos--;
		return (T)stck[tos];
	}
}
public class MyStack {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		GStack<String> stringStack=new GStack<String>();
		stringStack.push("seoul");
		stringStack.push("busan");
		stringStack.push("LA");
		
		for(int n=0; n<3;n++) {
			System.out.println(stringStack.pop());
		}
		
		GStack<Integer> intStack=new GStack<Integer>();
		intStack.push(1);
		intStack.push(3);
		intStack.push(5);
		
		for(int n=0;n<3;n++) {
			System.out.println(intStack.pop());
		}
	}

}
//출력결과
LA
busan
seoul
5
3
1