728x90
반응형

Collections 클래스 문제

  1. 숫자 5개를 스캐너로 입력 받아서 ArrayList에 넣기
  2. Collections 클래스의 sort를 이용해 정렬하기
  3. 출력 ex) 3->5->6->8->10

 

 

▶  main 코드

	//list의 내용을 순서대로 출력
	static void printList(ArrayList<Integer> list) { 
		Iterator<Integer> it = list.iterator();
		
		while (it.hasNext()) { 
			Integer e = it.next(); 
			String separator;
			if (it.hasNext())
				separator = "->"; 
			else
				separator = "\n"; 
			
			System.out.print(e+separator);
		}
	}//printList_end

	public static void main(String[] args) {
		ArrayList<Integer> list = new ArrayList<Integer>();
		Scanner scan = new Scanner(System.in);

		for(int i=0;i<5;i++){
			System.out.print((i+1)+"번째 숫자를 입력하세요 >> ");
			list.add(scan.nextInt());
		}

		System.out.println("<정렬 전 list>");
		printList(list); 

		Collections.sort(list); //Collections 클래스의 sort 메소드를 이용해 정렬

		System.out.println("<정렬 후 list>");
		printList(list); 
		
		scan.close();
	}//main_end

 

 

▶  출력 결과

1번째 숫자를 입력하세요 >> 5
2번째 숫자를 입력하세요 >> 6
3번째 숫자를 입력하세요 >> 8
4번째 숫자를 입력하세요 >> 9
5번째 숫자를 입력하세요 >> 1
<정렬 전 list>
5->6->8->9->1
<정렬 후 list>
1->5->6->8->9

 

 


▶  입력한 값의 인덱스 위치를 찾아보자

		System.out.print("입력한 숫자 중 인덱스를 구하고 싶은 값을 입력하시오 >> ");
		int num=scan.nextInt();
		int index = Collections.binarySearch(list, num)+1;//num의 위치를 찾는다. 1번째부터 5번째까지 있다고 가정하고 +1
		System.out.println(num+" <- "+index+"번째 위치에 있다.");

 

 

▶ 출력 결과

1번째 숫자를 입력하세요 >> 5
2번째 숫자를 입력하세요 >> 6
3번째 숫자를 입력하세요 >> 7
4번째 숫자를 입력하세요 >> 8
5번째 숫자를 입력하세요 >> 9

입력한 숫자 중 인덱스를 구하고 싶은 값을 입력하시오 >> 8
8 <- 4번째 위치에 있다.

※ sort 정렬을 한 뒤에 인덱스 값을 구해야 한다. 

 

 

 

 

 

 

[JAVA] 컬렉션과 제네릭 (16일차)

1. 컬렉션 2. 제네릭 3. Vector 4. ArrayList 5. HashMap 1. 컬렉션 (collection) ▶ 컬렉션(collection)의 개념 요소(element) 객체들의 저장소 객체들의 컨테이너라고도 불린다. 요소의 개수에 따라 크기를 자동으로

deliciouscode.tistory.com

 

728x90
반응형
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
반응형
728x90
반응형

문제1

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

    => 해당 map을 list에 저장
  2. 삭제 부분
    스캐너로 입력한 이름 값과 map의 name value 값과 동일 할 경우 리스트에서 삭제

    -> ex, 스캐너로 "홍길동"을 입력하면 name의 value가 "홍길동"인 map을 리스트에서 제거

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

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

 


▶ 코드

1) 입력 부분

				//다음과 같이 map에 스캐너로 입력된 값 저장
				HashMap<String,Object> map = new HashMap<String,Object>();

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

				list.add(map); //해당 map을 list에 저장

 

 

2) 삭제 부분

				//스캐너로 입력한 값과 map의 name value 값과 동일 할 경우 리스트에서 삭제
				System.out.print("삭제할 내용을 입력하세요 >> ");
				Object obj = scan.next();
				for(int i=0;i<list.size();i++){
					if(obj.equals(list.get(i).get("name"))){	
						System.out.println("삭제 - 이름:"+list.get(i).get("name")+", 나이:"+list.get(i).get("age")+", 주소:"+list.get(i).get("address"));
						list.remove(i);
						break;
					} else
						System.out.println("해당 이름을 가진 사람이 없어 삭제되지 않았습니다.");
				}

 

 

3) 출력 부분

				for(int i=0;i<list.size();i++){
					System.out.print("이름:"+list.get(i).get("name"));
					System.out.print(", 나이:"+list.get(i).get("age"));
					System.out.println(", 주소:"+list.get(i).get("address"));
				}

 

 

4) 종료 부분

				System.out.println("프로그램이 종료되었습니다.");
				break;//while_out

 

 

 


▶ 출력 결과

1) 리스트 입력

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

(1)입력, (2)삭제, (3)출력, (4)종료 : 1
이름을 입력하세요 >> 유재석
나이를 입력하세요 >> 50
주소를 입력하세요 >> 인천

 

 

2) 입력한 리스트 내용 출력

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

 

 

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

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

(1)입력, (2)삭제, (3)출력, (4)종료 : 3
이름:유재석, 나이:50, 주소:인천

(1)입력, (2)삭제, (3)출력, (4)종료 : 2
삭제할 내용을 입력하세요 >> 박명수
해당 이름을 가진 사람이 없어 삭제되지 않았습니다.

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

 

4) 프로그램 종료

(1)입력, (2)삭제, (3)출력, (4)종료 : 4
프로그램이 종료되었습니다.

 

 

 


▶ 전체 코드

		ArrayList<HashMap<String,Object>> list = new ArrayList<HashMap<String,Object>>();
		Scanner scan = new Scanner(System.in);

		//break문을 만날 때까지 무한 반복 
		while(true){
			System.out.print("(1)입력, (2)삭제, (3)출력, (4)종료 : ");
			int get = scan.nextInt();

			if(get==1){ //입력
				//다음과 같이 map에 스캐너로 입력된 값 저장
				HashMap<String,Object> map = new HashMap<String,Object>();

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

				list.add(map); //해당 map을 list에 저장
			} else if(get==2){ //삭제
				//스캐너로 입력한 값과 map의 name value 값과 동일 할 경우 리스트에서 삭제
				System.out.print("삭제할 내용을 입력하세요 >> ");
				Object obj = scan.next();
				for(int i=0;i<list.size();i++){
					if(obj.equals(list.get(i).get("name"))){	
						System.out.println("삭제 - 이름:"+list.get(i).get("name")+", 나이:"+list.get(i).get("age")+", 주소:"+list.get(i).get("address"));
						list.remove(i);
						break;
					} else
						System.out.println("해당 이름을 가진 사람이 없어 삭제되지 않았습니다.");
				}

			} else if(get==3){ //출력
				for(int i=0;i<list.size();i++){
					System.out.print("이름:"+list.get(i).get("name"));
					System.out.print(", 나이:"+list.get(i).get("age"));
					System.out.println(", 주소:"+list.get(i).get("address"));
				}

			} else if(get==4){ //종료
				System.out.println("프로그램이 종료되었습니다.");
				break;//while_out
			} 
			System.out.println(); //줄바꿈
		}//while_end

		scan.close();

 

 

 

 

 

 

문제2

  1. 입력 부분
     -> 다음과 같이 map에 스캐너로 입력된 값 저장
     -> key : name, value : 이름 (ex, 홍길동)
     -> key : age, value : 나이 (ex, 30)
     -> key : java, value : 자바 점수 (ex, 90), 단 0~100 사이 값이 아니면 다시 입력
     -> key : oracle, value : 오라클 점수 (ex, 100), 단 0~100 사이 값이 아니면 다시 입력

     => 해당 map을 list에 저장

  2. 삭제 부분
    스캐너로 입력한 값과 map의 name value 값과 age value값이 둘다 동일할 경우 리스트에서 삭제

     -> ex, 스캐너로 "홍길동 30"을 입력하면 name의 value가 "홍길동" 
    age의 value가 30인 map을 리스트에서 제거

  3. 출력 부분
     -> 콘솔에 '이름 : 홍길동, 나이 : 30, 자바점수 : 90, 오라클점수 : 100' 과 같은 형태로 출력

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

 


▶ 코드

1) 입력 부분

				HashMap<String,Object> map = new HashMap<String,Object>();

				System.out.print("이름을 입력하세요 >> ");
				map.put("name",scan.next());
				System.out.print("나이를 입력하세요 >> ");
				map.put("age",scan.nextInt());

				while(true){
					System.out.print("자바 점수를 입력하세요 >> ");
					int java = scan.nextInt();
					if(java>=0 && java <=100){ //0~100
						map.put("java",java);
						break;//while1_inner_out
					}
					else
						System.out.println("0부터 100까지의 숫자를 입력해야합니다.\n"); //가독성을 위해 줄바꿈
				}//while1_inner

				while(true){
					System.out.print("오라클 점수를 입력하세요 >> ");
					int oracle = scan.nextInt();
					if(oracle>=0 && oracle <=100){ //0~100
						map.put("oracle",oracle);
						break;//while2_inner_out
					}
					else
						System.out.println("0부터 100까지의 숫자를 입력해야합니다.\n"); //줄바꿈
				}//while2_inner

				list.add(map);

 

※  보완) 메소드를 이용해 자바와 오라클의 점수 범위를 중복 코드 없이 출력할 수 있다.

	static int score(Scanner scan, String str){
		int num;
		while(true){
			System.out.print(str + " 점수를 입력하세요 >> ");
			num = scan.nextInt();
			if(num>=0 && num <=100)
				break;
			else 
				System.out.println("0부터 100까지의 숫자를 입력해야합니다.\n"); //줄바꿈
		}
		return num;
	}
				map.put("java",score(scan,"자바"));
				map.put("oracle",score(scan,"오라클"));

 

 

2) 삭제 부분

				//name value 값과 age value값이 둘다 동일 할 경우 리스트에서 삭제
				System.out.print("삭제할 이름과 나이를 정확히 입력하세요 ex)홍길동 30 >> ");
				String name = scan.next();
				Object age = scan.nextInt();

				for(int i=0;i<list.size();i++){
					if(name.equals(list.get(i).get("name")) && age == list.get(i).get("age")){
						System.out.println("삭제 - 이름:"+list.get(i).get("name")+", 나이:"+list.get(i).get("age")+", 자바 점수:"+list.get(i).get("java")+", 오라클 점수:"+list.get(i).get("oracle"));
						list.remove(i);
						break;
					} else
						System.out.println("해당 정보와 일치하는 사람이 없어 삭제되지 않았습니다.");
				}

 

 

3) 출력 부분

				for(int i=0;i<list.size();i++){
					System.out.print("이름:"+list.get(i).get("name"));
					System.out.print(", 나이:"+list.get(i).get("age"));
					System.out.print(", 자바 점수:"+list.get(i).get("java"));
					System.out.println(", 오라클 점수:"+list.get(i).get("oracle"));
				}

 

 

4) 종료 부분

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

 

 


▶ 출력 결과

1) 리스트 입력 (자바와 오라클 점수가 0~100 사이 값이 아니면 다시 입력)

(1)입력, (2)삭제, (3)출력, (4)종료 : 1
이름을 입력하세요 >> 홍길동
나이를 입력하세요 >> 30
자바 점수를 입력하세요 >> 55
오라클 점수를 입력하세요 >> 77

(1)입력, (2)삭제, (3)출력, (4)종료 : 1
이름을 입력하세요 >> 유재석
나이를 입력하세요 >> 50
자바 점수를 입력하세요 >> -1
0부터 100까지의 숫자를 입력해야합니다.

자바 점수를 입력하세요 >> 0
오라클 점수를 입력하세요 >> 101
0부터 100까지의 숫자를 입력해야합니다.

오라클 점수를 입력하세요 >> 100

 

 

2) 입력한 리스트 내용 출력

(1)입력, (2)삭제, (3)출력, (4)종료 : 3
이름:홍길동, 나이:30, 자바 점수:55, 오라클 점수:77
이름:유재석, 나이:50, 자바 점수:0, 오라클 점수:100

 

 

3) 스캐너로 입력한 값과 map의 name value 값과 age value값이 모두 일치할 경우 리스트에서 삭제

(1)입력, (2)삭제, (3)출력, (4)종료 : 2
삭제할 이름과 나이를 정확히 입력하세요 ex)홍길동 30 >> 홍길동 30
삭제 - 이름:홍길동, 나이:30, 자바 점수:55, 오라클 점수:77

(1)입력, (2)삭제, (3)출력, (4)종료 : 3
이름:유재석, 나이:50, 자바 점수:0, 오라클 점수:100

(1)입력, (2)삭제, (3)출력, (4)종료 : 2
삭제할 이름과 나이를 정확히 입력하세요 ex)홍길동 30 >> 유재석 49
해당 정보와 일치하는 사람이 없어 삭제되지 않았습니다.

(1)입력, (2)삭제, (3)출력, (4)종료 : 3
이름:유재석, 나이:50, 자바 점수:0, 오라클 점수:100

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

 

 

4) 프로그램 종료

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

 

 

 


▶ 전체 코드

	//점수를 확인 및 입력하는 메소드
	//static으로 선언해야 호출 가능. 입력받은 점수를 반환해야하기 때문에 int형으로 반환한다.
	static int score(Scanner s, String str){
		int num;
		while(true){
			System.out.print(str + " 점수를 입력하세요 >> ");
			num = s.nextInt();
			if(num>=0 && num <=100)
				break;
			else 
				System.out.println("0부터 100까지의 숫자를 입력해야합니다.\n"); //줄바꿈
		}
		return num;
	}

	public static void main(String[] args) {
		ArrayList<HashMap<String,Object>> list = new ArrayList<HashMap<String,Object>>();
		Scanner scan = new Scanner(System.in);

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

			if(get==1){
				//입력
				HashMap<String,Object> map = new HashMap<String,Object>();

				System.out.print("이름을 입력하세요 >> ");
				map.put("name",scan.next());
				System.out.print("나이를 입력하세요 >> ");
				map.put("age",scan.nextInt());
				map.put("java",score(scan,"자바"));
				map.put("oracle",score(scan,"오라클"));

				list.add(map);

			} else if(get==2){
				//name value 값과 age value값이 둘다 동일 할 경우 리스트에서 삭제
				System.out.print("삭제할 이름과 나이를 정확히 입력하세요 ex)홍길동 30 >> ");
				String name = scan.next();
				Object age = scan.nextInt();

				for(int i=0;i<list.size();i++){
					if(name.equals(list.get(i).get("name")) && age == list.get(i).get("age")){
						System.out.println("삭제 - 이름:"+list.get(i).get("name")+", 나이:"+list.get(i).get("age")+", 자바 점수:"+list.get(i).get("java")+", 오라클 점수:"+list.get(i).get("oracle"));
						list.remove(i);
						break;
					} else
						System.out.println("해당 정보와 일치하는 사람이 없어 삭제되지 않았습니다.");
				}

			} else if(get==3){
				//출력
				for(int i=0;i<list.size();i++){
					System.out.print("이름:"+list.get(i).get("name"));
					System.out.print(", 나이:"+list.get(i).get("age"));
					System.out.print(", 자바 점수:"+list.get(i).get("java"));
					System.out.println(", 오라클 점수:"+list.get(i).get("oracle"));
				}

			} else if(get==4){
				System.out.println("프로그램 종료");
				break;//while_out
			}
			System.out.println(); //줄바꿈
		}//while_end
	}//main_end

 

 

 

 

 

 

[JAVA] ★ Vector, ArrayList, HashMap ★ (16일차)

1. 컬렉션 2. 제네릭 3. Vector 4. ArrayList 5. HashMap 3. Vector ▶ Vector 의 특징 java.util.Vector 에서 E 대신 요소로 사용할 특정 타입으로 구체화한다. 여러 객체들을 삽입, 삭제, 검색하는 컨테이너 클래스이

deliciouscode.tistory.com

 

728x90
반응형
728x90
반응형

1. 해시맵 예제

▶ 코드

		HashMap<String,Object> hong = new HashMap<String,Object>();
		HashMap<String,Object> yu = new HashMap<String,Object>();
		
		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("addr","인천");
		yu.put("phone","010-9876-5432");
		
		ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
		
		list.add(hong);
		list.add(yu);
		
		for(int i=0;i<list.size();i++){
			System.out.print("이름:"+list.get(i).get("name"));
			System.out.println(", 나이:"+list.get(i).get("age"));
		}
  • ArrayList와 HashMap을 혼합하여 데이터를 관리할 수 있다.

 

 

 출력 결과

이름:홍길동, 나이:30, 주소:서울, 번호:010-1234-5678
이름:유재석, 나이:50, 주소:인천, 번호:010-9876-5432

 

 

 

2. 위 예제를 응용한 문제

  • 사람을 관리하는 ArrayList<HashMap<String, Object>> 만들기

    -> 객체 명 : list
    -> 이름, 나이, 성별, 주소를 스캐너로 입력받아서 map 형태로 만든 후 리스트에 저장 (3개)
    -> 저장 후 콘솔에 '이름 : 홍길동, 나이 : 30, 성별 : 남, 주소 : 서울'
    과 같은 형태로 출력

 

 

▶ 코드

		ArrayList<HashMap<String,Object>> list = new ArrayList<HashMap<String,Object>>();
		Scanner scan = new Scanner(System.in);
		
		for(int i=0;i<3;i++){
			HashMap<String,Object> map = new HashMap<String,Object>();
			
			System.out.print("이름을 입력하세요 >> ");
			map.put("name", scan.next());
			System.out.print("나이를 입력하세요 >> ");
			map.put("age", scan.nextInt());
			System.out.print("성별을 입력하세요(남/여) >> ");
			map.put("gender", scan.next());
			System.out.print("주소를 입력하세요 >> ");
			map.put("address", scan.next());
			System.out.println(); //줄바꿈
			
			list.add(map);

		}
		System.out.println(); //줄바꿈
		
		System.out.println("<list>");
		for(int i=0;i<list.size();i++){
			System.out.print("이름:"+list.get(i).get("name"));
			System.out.print(", 나이:"+list.get(i).get("age"));
			System.out.print(", 성별:"+list.get(i).get("gender"));
			System.out.println(", 주소:"+list.get(i).get("address"));
		}
		
		scan.close();
  • 배열 사용 없이 맵 하나만 사용하기 위해 반복문 안에 HashMap을 선언하였다. 밖에서 객체 생성을 하면 마지막 값으로만 값이 저장된다.

 

 

▶ 출력 결과

이름을 입력하세요 >> 홍길동
나이를 입력하세요 >> 30
성별을 입력하세요(남/여) >> 남
주소를 입력하세요 >> 서울

이름을 입력하세요 >> 유재석
나이를 입력하세요 >> 50
성별을 입력하세요(남/여) >> 남
주소를 입력하세요 >> 인천

이름을 입력하세요 >> 박명수
나이를 입력하세요 >> 40
성별을 입력하세요(남/여) >> 여
주소를 입력하세요 >> 경기도


<list>
이름:홍길동, 나이:30, 성별:남, 주소:서울
이름:유재석, 나이:50, 성별:남, 주소:인천
이름:박명수, 나이:40, 성별:여, 주소:경기도

 

 

 

 

 

 

 

[JAVA] ★ Vector, ArrayList, HashMap ★ (16일차)

1. 컬렉션 2. 제네릭 3. Vector 4. ArrayList 5. HashMap 3. Vector ▶ Vector 의 특징 java.util.Vector 에서 E 대신 요소로 사용할 특정 타입으로 구체화한다. 여러 객체들을 삽입, 삭제, 검색하는 컨테이너 클래스이

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

 

728x90
반응형

+ Recent posts