728x90
반응형

문제

  1. 입력 부분
     -> 다음과 같이 Person클래스에 스캐너로 입력된 값 저장
     -> String name : 이름 (ex, 홍길동)
     -> int age : 나이 (ex, 30)
     -> String addr : 주소 (ex, 서울)

     => 해당 Person 객체를 map에 저장
     => 키 값은 name

     ex, map.put("홍길동",new Person("홍길동", 30, "서울"));

  2. 삭제 부분
    스캐너로 입력한 값과 객체의 name 변수 값과 동일 할 경우 맵에서 삭제
     -> ex, 스캐너로 "홍길동"을 입력하면 name의 변수가 "홍길동"인 map을 제거

  3. 출력 부분
     -> 콘솔에 '이름 : 홍길동, 나이 : 30, 주소 : 서울' 과 같은 형태로 출력

  4. 종료 부분
     -> 프로그램 종료

 

 


▶ Person 클래스

public class Person {
	private String name;
	private int age;
	private String addr;
	
	Person(String name, int age, String addr){
		this.name=name;
		this.age=age;
		this.addr=addr;
	}

	public String getName() {
		return name;
	}

	public int getAge() {
		return age;
	}

	public String getAddr() {
		return addr;
	}
}

 

 


▶ main 코드

1) 입력 부분

				System.out.print("이름을 입력하세요 >> ");
				String name = scan.next();
				System.out.print("나이를 입력하세요 >> ");
				int age = scan.nextInt();
				System.out.print("주소를 입력하세요 >> ");
				String addr = scan.next();
	
				map.put(name, new Person(name, age, addr));

 

 

2) 삭제 부분

				Set<String> keys = map.keySet();//key 값을 순차적으로 접근할 수 있다.
				Iterator<String> it = keys.iterator();
				
				System.out.print("삭제할 이름을 입력하세요 >> ");
				String rname = scan.next();

				while(it.hasNext()){
					if(rname.equals(map.get(it.next()).getName())) //입력된 값과 일치하면 삭제
						map.remove(rname);
				}

 

※ 위 코드는 Iterator을 이용한 코드이다. 아래 코드로 작성해도 같은 결과를 가져온다.

				if(map.containsKey(rname)){
					map.remove(rname);
				}

 

 

3) 출력 부분

				Set<String> keys = map.keySet();//key 값을 순차적으로 접근할 수 있다.
				Iterator<String> it = keys.iterator();
				
				while(it.hasNext()){
					Person p = map.get(it.next());
					System.out.print("이름 : " + p.getName());
					System.out.print(", 나이 : " + p.getAge());
					System.out.println(", 주소 : " + p.getAddr());
				}

 

 

4) 종료 부분

				System.out.println("프로그램 종료");
				break;

 

 

 


▶ 출력 결과

1) 입력

(1)입력, (2)삭제, (3)출력, (4)종료 : 1
이름을 입력하세요 >> 홍길동
나이를 입력하세요 >> 30
주소를 입력하세요 >> 서울

 

 

2) 입력한 내용 출력

(1)입력, (2)삭제, (3)출력, (4)종료 : 3
이름 : 홍길동, 나이 : 30, 주소 : 서울

 

 

3) 스캐너로 입력한 값과 name value 값이 동일할 경우 삭제

(1)입력, (2)삭제, (3)출력, (4)종료 : 2
삭제할 이름을 입력하세요 >> 홍길동

(1)입력, (2)삭제, (3)출력, (4)종료 : 3

※ 일치하지 않는다면 삭제되지 않는다.

 

4) 프로그램 종료

(1)입력, (2)삭제, (3)출력, (4)종료 : 4
프로그램 종료

 

 

 


▶ 전체 코드

		HashMap<String,Person> map = new HashMap<String,Person>();
		Scanner scan = new Scanner(System.in);

		while(true){
			System.out.print("(1)입력, (2)삭제, (3)출력, (4)종료 : ");
			int get=scan.nextInt();

			if(get==1){ //입력
				
				System.out.print("이름을 입력하세요 >> ");
				String name = scan.next();
				System.out.print("나이를 입력하세요 >> ");
				int age = scan.nextInt();
				System.out.print("주소를 입력하세요 >> ");
				String addr = scan.next();
	
				map.put(name, new Person(name, age, addr));
			

			} else if(get==2){ //삭제
				Set<String> keys = map.keySet();//key 값을 순차적으로 접근할 수 있다.
				Iterator<String> it = keys.iterator();
				
				System.out.print("삭제할 이름을 입력하세요 >> ");
				String rname = scan.next();

				while(it.hasNext()){
					if(rname.equals(map.get(it.next()).getName())) //입력된 값과 일치하면 삭제
						map.remove(rname);
				}
//				or
//				if(map.containsKey(rname)){
//					map.remove(rname);
//				}
				
			} else if(get==3){ //출력
				Set<String> keys = map.keySet();//key 값을 순차적으로 접근할 수 있다.
				Iterator<String> it = keys.iterator();
				
				while(it.hasNext()){
					Person p = map.get(it.next());
					System.out.print("이름 : " + p.getName());
					System.out.print(", 나이 : " + p.getAge());
					System.out.println(", 주소 : " + p.getAddr());
				}
				
			} else if(get==4){ //종료
				System.out.println("프로그램 종료");
				break;
			}
			System.out.println(); //줄바꿈
		}//while_end

 

 

 

 

 

 

[JAVA] Iterator (17일차)

1. HashMap과 ArrayList 2. Iterator 3. 심화 문제 풀이 1. HashMap과 ArrayList [JAVA] 해시맵 심화 문제 풀이 (17일차) 문제1 입력 부분 -> 다음과 같이 map에 스캐너로 입력된 값 저장 -> key : name, value : 이름 (ex, 홍

deliciouscode.tistory.com

 

728x90
반응형
728x90
반응형

<오늘의 학습>

1. HashMap과 ArrayList

2. Iterator

3. 심화 문제 풀이

 

 

 

1. HashMap과 ArrayList

 

[JAVA] 해시맵 실습 (17일차)

1. 해시맵 예제 ▶ 코드 HashMap hong = new HashMap(); HashMap yu = new HashMap(); hong.put("name","홍길동"); hong.put("age",30); hong.put("addr","서울"); hong.put("phone","010-1234-5678"); yu.put("name","유재석"); yu.put("age",50); yu.put("a

deliciouscode.tistory.com

 

 

[JAVA] 해시맵 심화 문제 풀이 (17일차)

문제1 입력 부분 -> 다음과 같이 map에 스캐너로 입력된 값 저장 -> key : name, value : 이름 (ex, 홍길동) -> key : age, value : 나이 (ex, 30) -> key : addr, value : 주소 (ex, 서울) => 해당 map을 list에 저장 삭제 부분

deliciouscode.tistory.com

 

 

 

 

2. Iterator

▶ Iterator<E> 인터페이스의 특징

  • 컬렉션의 순차 검색을 위해 사용한다. Iterator 객체를 이용하면 인덱스 없이 순차적 검색이 가능하다.
  • iterator() 메소드 : Iterator 객체 반환
  • Vector, ArrayList, LinkedList가 상속받는 인터페이스
    • 리스트 구조의 컬렉션에서 요소의 순차 검색을 위한 메소드 포함

 

 

Iterator 인터페이스 메소드

메소드 설명
boolean hasNext() 방문할 요소가 남아 있으면 true 리턴
E next() 다음 요소 리턴
void remove() 마지막으로 리턴된 요소를 제거

 

 


▶ 예제 1

▷ v 객체에 숫자를 5개 넣고 for문을 이용해 숫자를 출력할 수 있다.

		Vector<Integer> v = new Vector<Integer>();

		//v 객체에 숫자 5개 넣기
		v.add(0);
		v.add(1);
		v.add(2);
		v.add(3);
		v.add(4);
		
		for(Integer num:v)
			System.out.println(num);

 

 

▷ Iterator 객체를 이용하여 인덱스 없이 순차적으로 검색할 수 있다.

		Iterator<Integer> it = v.iterator(); //인터페이스
		//it 위치를 -1 이라고 생각하면 이해하기 편하다.
		
		while(it.hasNext()){//방문할 요소가 남아 있으면 true를 리턴한다.
			System.out.println(it.next());
		}

 

 


▶ 예제 2

  • ArrayList<String> 생성
  • 문자열 5개 스캐너로 입력 받아서 저장
  • Iterator 객체를 통해서 출력

 

▷ 코드

		ArrayList<String> list = new ArrayList<String>();
		Scanner scan = new Scanner(System.in);
		
		for(int i=0;i<5;i++){
			System.out.print((i+1)+"번째 문자열 입력 >> ");
			list.add(scan.next());
		}
		
		Iterator<String> itS = list.iterator();
		
		while(itS.hasNext()){
			System.out.println(itS.next());
		}
		scan.close();

 

 

▷ 출력 결과

1번째 문자열 입력 >> Kim
2번째 문자열 입력 >> Lee
3번째 문자열 입력 >> Park
4번째 문자열 입력 >> Jo
5번째 문자열 입력 >> Han

Kim
Lee
Park
Jo
Han

 

 

 

 

 

3. Iterator문제

 

[JAVA] Iterator 심화 문제 풀이 (17일차)

문제 입력 부분 -> 다음과 같이 Person클래스에 스캐너로 입력된 값 저장 -> String name : 이름 (ex, 홍길동) -> int age : 나이 (ex, 30) -> String addr : 주소 (ex, 서울) => 해당 Person 객체를 map에 저장 => 키 값은 n

deliciouscode.tistory.com

 

 

 

 

 


2023년 6월 8일 목요일

<17일차 수업 후기>

오늘은 HashMap과 ArrayList, Iterator를 이용한 심화 문제를 위주로 수업이 진행되었다. HashMap은 Iterator을 상속받지 못했기 때문에 Set을 이용해 key 값을 받아와서 사용하고, ArrayList는 Iterator를 상속받았기 때문에 바로 사용이 가능하다는 차이가 있었다.  처음 컬렉션과 제네릭을 배울 땐 알지 못했는데 오늘 Iterator를 이용해 실습하면서 16일차에 배운 내용을 많이 이해할 수 있었다.

이틀이라는 짧은 시간동안 실습해보았음에도 데이터를 추가하거나 삭제하는 부분에 대해 배열보다 훨씬 편했고, 왜 중요한 파트라고 말씀하셨는지 알 수 있었다.  아직은 완벽하지 않지만 잘 학습해서 내 지식으로 만들고 싶은 욕심이 생긴다.

728x90
반응형

+ Recent posts