HRD_훈련/실습
[JAVA] Iterator 심화 문제 풀이 (17일차)
리드미.
2023. 6. 8. 20:23
728x90
반응형
문제
- 입력 부분
-> 다음과 같이 Person클래스에 스캐너로 입력된 값 저장
-> String name : 이름 (ex, 홍길동)
-> int age : 나이 (ex, 30)
-> String addr : 주소 (ex, 서울)
=> 해당 Person 객체를 map에 저장
=> 키 값은 name
ex, map.put("홍길동",new Person("홍길동", 30, "서울")); - 삭제 부분
스캐너로 입력한 값과 객체의 name 변수 값과 동일 할 경우 맵에서 삭제
-> ex, 스캐너로 "홍길동"을 입력하면 name의 변수가 "홍길동"인 map을 제거 - 출력 부분
-> 콘솔에 '이름 : 홍길동, 나이 : 30, 주소 : 서울' 과 같은 형태로 출력 - 종료 부분
-> 프로그램 종료
▶ 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
반응형