반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

bro's coding

java.map 본문

[IT]/java

java.map

givemebro 2021. 3. 9. 10:23
반응형

Map

key와 value 쌍으로 저장
주로 key로 검색, 삭제

참고) set: 중복 인정X / List : index로 관리

import java.util.LinkedHashMap;

package step2;

import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Set;

public class TestMap1 {
	public static void main(String[] args) {
//		HashMap map = new HashMap();
		// Generic > 데이터의 종류, Generic을 적용하면 Casting 절차 감소, 데이터의 안정성
		LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();// 순서 보장
		// Map은 key와 value 쌍으로 저장
		map.put("a", "족발");
		map.put("b", "소주");
		System.out.println(map);
		// {a=족발, b=소주}

		// key로 검색해서 value 반환
		System.out.println(map.get("a"));
		// 족발

		// key에 해당하는 value가 없을 때는 null을 반환
		System.out.println(map.get("k"));
		// null

		// key의 존재 유무를 확인/ 있다:true/없다:false
		System.out.println(map.containsKey("e"));
		// false

		// key는 유일해야 함 > 기존 키를 사용하면 업데이트
		map.put("b", "맥주");
		System.out.println(map.get("b"));
		// 맥주

		// remove
		System.out.println(map);
		System.out.println("remove" + map.remove("a"));
		System.out.println(map);
		/*
		 * {a=족발, b=맥주} remove족발 {b=맥주}
		 */

		map.put("d", "콜라");
		map.put("e", "와인");
		System.out.println(map);
		// {b=맥주, d=콜라, e=와인}

		// key의 집합을 반환
		Set<String> set = map.keySet();
		Iterator<String> it = set.iterator();// Iterator(반복자) : Collection 계열의 모든 자료구조체의 요소를 열거할 수 있는 표준화된 방법
		// hasNext():boolean, next:String을 이용해서 while문으로 열거
		while(it.hasNext()) {
			System.out.println(it.next());
		}
		/*
		b
		d
		e
		 */
		
		// value의 집합을 반환
		Collection<String> col = map.values();
		Iterator<String> it2=col.iterator();
		while(it2.hasNext()) {
			System.out.println(it2.next());
		}
		/*
		맥주
		콜라
		와인

		 */
		
		System.out.println(map);
		// {b=맥주, d=콜라, e=와인}
		map.clear();
		System.out.println(map);
		// {}
		
	}
}

 


package test.step1;

import model.Employee;
import model.SchoolService;
import model.Student;
import model.Teacher;

public class TestCaseAdd {
	public static void main(String[] args) {
		SchoolService service = new SchoolService();
		service.addPerson(new Student("0101231234", "이희은", "용인", "17"));
		service.addPerson(new Teacher("0101231235", "신정희", "수지", "국어"));
		service.addPerson(new Student("0101231236", "고보승", "수원", "16"));
		service.addPerson(new Employee("0101231237", "이재훈", "화성", "재무부"));
		service.addPerson(new Student("0101231238", "최인재", "용인", "18"));
		service.addPerson(new Teacher("0101231239", "유예주", "용인", "수학"));
		service.printAll();
//0101231234 tel 이 중복되어 추가될 수 없습니다
		service.addPerson(new Student("0101231234", "아이유", "잠실", "18"));
		System.out.println("***학교 구성원 등록 완료***");
		service.printAll();// 6명 출력

	}
}



package test.step2;

import model.Employee;

import model.Person;

import model.SchoolService;

import model.Student;

import model.Teacher;

public class TestCaseFind {

	public static void main(String[] args) {
		SchoolService service = new SchoolService();
		service.addPerson(new Student("0101231234", "이희은", "용인", "17"));
		service.addPerson(new Teacher("0101231235", "신정희", "수지", "국어"));
		service.addPerson(new Student("0101231236", "고보승", "수원", "16"));
		service.addPerson(new Employee("0101231237", "이재훈", "화성", "재무부"));
		service.addPerson(new Student("0101231238", "최인재", "용인", "18"));
		service.addPerson(new Teacher("0101231239", "유예주", "용인", "수학"));
		service.printAll();
		System.out.println("***학교 구성원 등록 완료***");
		String tel = "0101231235";
		tel = "0101231230";//존재하지 않는 번호로도 테스트 
		Person p = service.findPersonByTel(tel);
		System.out.println("검색결과:" + p); // tel에 해당하는 구성원이 있으면 출력하고 없으면 null이 출력됨
		System.out.println("***검색완료***");

	}
}






package test.step3;

import model.Employee;
import model.SchoolService;
import model.Student;
import model.Teacher;

public class TestCaseDelete {

	public static void main(String[] args) {

		SchoolService service = new SchoolService();
		service.addPerson(new Student("0101231234", "이희은", "용인", "17"));
		service.addPerson(new Teacher("0101231235", "신정희", "수지", "국어"));
		service.addPerson(new Student("0101231236", "고보승", "수원", "16"));
		service.addPerson(new Employee("0101231237", "이재훈", "화성", "재무부"));
		service.addPerson(new Student("0101231238", "최인재", "용인", "18"));
		service.addPerson(new Teacher("0101231239", "유예주", "용인", "수학"));
		service.printAll();
		System.out.println("***학교 구성원 등록 완료***");

		service.deletePersonByTel("0101231239");
		System.out.println("**삭제 후 명단**");
		service.printAll();// 5명 출력

	}

}
package test.step4;

import model.Employee;
import model.SchoolService;
import model.Student;
import model.Teacher;

public class TestCaseUpdate {

	public static void main(String[] args) {

		SchoolService service = new SchoolService();
		service.addPerson(new Student("0101231234", "이희은", "용인", "17"));
		service.addPerson(new Teacher("0101231235", "신정희", "수지", "국어"));
		service.addPerson(new Student("0101231236", "고보승", "수원", "16"));
		service.addPerson(new Employee("0101231237", "이재훈", "화성", "재무부"));
		service.addPerson(new Student("0101231238", "최인재", "용인", "18"));
		service.addPerson(new Teacher("0101231239", "유예주", "용인", "수학"));
		service.printAll();
		System.out.println("***학교 구성원 등록 완료***");
		//구성원 정보 수정 
		service.updatePerson(new Teacher("0101231234","박보검","분당","자바"));
		//존재하지 않는 구성원 tel이 있으면 tel에 해당하는 구성원 정보가 없어서 수정 불가 
		service.updatePerson(new Teacher("0101231230","박보검","분당","자바"));
		System.out.println("***수정완료***");
		service.printAll();// 5명 출력
		

	}
}











package model;

public class Employee extends Person {
	private String department;

	public Employee(String tel, String name, String address, String department) {
		super(tel, name, address);
		this.department = department;
	}

	public String getDepartment() {
		return department;
	}

	public void setDepartment(String department) {
		this.department = department;
	}

	@Override
	public String toString() {
		return super.toString()+" department=" + department ;
	}
	
}










package model;

public class Student extends Person{
	private String stuId;

	public Student(String tel, String name, String address, String stuId) {
		super(tel, name, address);
		this.stuId = stuId;
	}

	public String getStuId() {
		return stuId;
	}

	public void setStuId(String stuId) {
		this.stuId = stuId;
	}

	@Override
	public String toString() {
		return super.toString()+" stuId=" + stuId;
	}
	
}










package model;

public class Teacher extends Person{
	private String subject;

	public Teacher(String tel, String name, String address, String subject) {
		super(tel, name, address);
		this.subject = subject;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	@Override
	public String toString() {
		return super.toString()+" subject=" + subject;
	}
	
}









package model;
/**
 * 학교 구성원(학생,교사,직원)의 공통점을 모아 일반화한 클래스 
 * 구성원 정보의 공통된 멤버(속성과 기능)을 정의한다 
 * 해당 클래스는 자신의 객체가 별도로 생성될 필요가 없으므로 
 * abstract로 처리한다 
 * @author 잠자리
 *
 */
public abstract class Person {
	private String tel;
	private String name;
	private String address;
	public Person(String tel, String name, String address) {
		super();
		this.tel = tel;
		this.name = name;
		this.address = address;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	@Override
	public String toString() {
		return "tel=" + tel + ", name=" + name + ", address=" + address;
	}
	
}








package model;

import java.util.Iterator;
import java.util.LinkedHashMap;

public class SchoolService {
	// key : tel value : Person 자식 객체 ( Student, Teacher , Employee )
	private LinkedHashMap<String, Person> map = new LinkedHashMap<String, Person>();

	public void addPerson(Person person) {
		// TODO Auto-generated method stub
		if (findTel(person.getTel())) {
			System.out.println("중복중복");
		} else {
			map.put(person.getTel(), person);
		}
	}

	public boolean findTel(String tel) {
		if (map.containsKey(tel)) {
			return true;
		} else {
			return false;
		}
	}

	public void printAll() {
		// TODO Auto-generated method stub
		Iterator<Person> it = map.values().iterator();
		while(it.hasNext()) {
			System.out.println(it.next());
		}
		
	}

	public Person findPersonByTel(String tel) {
		// TODO Auto-generated method stub
		if(map.containsKey(tel)) {
			return map.get(tel);
		}
		return null;
	}

	public void deletePersonByTel(String tel) {
		// TODO Auto-generated method stub
		map.remove(tel);
	}

	public void updatePerson(Person person) {
		// TODO Auto-generated method stub
		map.put(person.getTel(), person);
	}
}
반응형
Comments