2012-06-27 3 views
2

해시 맵 검색 방법이 필요합니다. 해시 맵 검색 방법이 필요합니다. 검색 방법을 알아낼 수 없습니다. 또한 편집 방법을 시도하고 있는데,이 방법이 필요하다고 생각합니다. 내 hashMap은 직원 데이터를 저장하는 것입니다. 나는 MainApp, Employee 클래스와 EmployeeStore 클래스를 가지고 있습니다. 누구든지 도와 줄 수 있습니까?해시맵 검색 방법

public class MainApp 
{ 

    public static void main(String[] args) 
    { 
     new MainApp().start(); 

    } 
    public void start() 
    { 
     EmployeeStore Store = new EmployeeStore(); 
     Store.add(new Employee ("James O' Carroll", 18,"hotmail.com")); 

     Store.add(new Employee ("Andy Carroll", 1171,"yahoo.com")); 

     Store.add(new Employee ("Luis Suarez", 7,"gmail.com")); 
     Store.print(); 
     Store.clear(); 
     Store.print(); 

     Store.add(new Employee ("James O' Carroll", 18,"hotmail.com")); 

     Store.add(new Employee ("Andy Carroll", 1171,"yahoo.com")); 

     Store.add(new Employee ("Luis Suarez", 7,"gmail.com")); 

     Store.print(); 
     Store.remove("Andy Carroll"); 
     Store.print(); 


    } 

} 


//Imports. 
import java.util.HashMap; 
//******************************************************************** 
import java.util.Map; 

public class EmployeeStore 
{ 
    HashMap<String, Employee> map; 

//Constructor. 
    public EmployeeStore() 
    { 
     map = new HashMap<String,Employee>(); 
    } 
//******************************************************************** 
//Hashmap Methods. 
//Add to the Hashmap : Employee. 
    public void add(Employee obj) 
    { 

     map.put(obj.getEmployeeName(), obj); 
    } 
//******************************************************************** 
//Remove from the Hashmap : Employee. 
    public void remove(String key) 
    { 
     //Remove the Employee by name. 
     map.remove(key); 
    } 
//******************************************************************** 
//Clear the Hashmap : Employee. 
    public void clear() 
    { 
     map.clear(); 
    } 
    //******************************************************************** 
//Print the Hashmap : Employee. 
    public void print() 
    { 
     System.out.println("\n********Employee's in the Company.********"); 
     for (Employee employee : map.values()) 
     { 
      System.out.println("Employee Name:\t" + employee.getEmployeeName()); 
      System.out.println("Employee Id:\t" + employee.getEmployeeId()); 
      System.out.println("E-mail:\t"+ employee.getEmployeeEmail()); 
     } 

    } 


//******************************************************************** 
//******************************************************************** 


} 

//Imports: 

//******************************************************************** 
//Employee Class. 
public class Employee 
{ 
//Variables. 
    private String employeeName; 
    private int employeeId; 
    private String employeeEmail; 
//******************************************************************** 
//Constructor. 
    public Employee(String employeeName, int employeeId, String employeeEmail) 
    { 
     this.employeeName = employeeName; 
     this.employeeId = employeeId; 
     this.employeeEmail = employeeEmail; 
    } 
//******************************************************************** 
//Getters. 
    public String getEmployeeEmail() { 
     return employeeEmail; 
    } 
    public void setEmployeeEmail(String employeeEmail) { 
     this.employeeEmail = employeeEmail; 
    } 
    public String getEmployeeName() { 
     return employeeName; 
    } 
    public int getEmployeeId() { 
     return employeeId; 
    } 
//******************************************************************** 
//toString method. 
    public String toString() { 
     return "Employee [employeeName=" + employeeName + ", employeeId=" 
       + employeeId + ", employeeEmail=" + employeeEmail + "]"; 
    } 
//******************************************************************** 





} 
+0

무엇을 검색 하시겠습니까? 그들의 이름으로 만 고용주? – dantuch

+0

이름, ID 및 전자 메일 주소로 종업원. – Pendo826

+0

이름이 쉽습니다 ('map.get (name)'). 그러나 다른 것들은 어렵습니다. 내가 어떻게하는지 보여 주길 바래? –

답변

7

이 글은 숙제이므로 안내하겠습니다. - Employeeemail - 신입 사원을 추가 할 때 Employee 다음 세 가지 맵을 채우기

그들의

먼저 추가지도를 만드는 것입니다, 매핑 id가 :


당신은 두 가지 옵션이 있습니다. 직원을 얻으려면 해당지도 중 하나에서 Map.get(key) 메서드를 사용해야합니다.

둘째이 더 나은 당신의 필요를 양복지 것 같아, 옵션지도에서 모든 값을 검색하는 것입니다 - id 또는 주어진 직원의 email가 하나 인 경우 그 반복 (foreach 사용), Map.values()를 사용하여,되는지 확인 당신은 찾고 있었다 - object.equals(object2) 방법을 사용했다.



그리고 마지막 한가지 - 그래서 이름에 정확하게, clean code를 작성하려고 - 대신 :

public void add(Employee obj) 
{ 
    map.put(obj.getEmployeeName(), obj); 
} 

시도 다음

public void add(Employee employee) 
{ 
    map.put(employee.getEmployeeName(), employee); 
} 

을 그것은 메이크업을한다 차이, 나를 믿어 :

편집 : 당신이 employee.getEmployeeName()했던 것처럼 - - 당신이 클래스 명명 된 Employee 내에서 단어 Employee와 이름 메소드의 중복이있을 때

조언 명명 로 돌아 간다. simpliest 및 최고 -

그것은 당신이 empoyee 아니라 그의 개,도 소파 :) employee.getName()의 이름을 얻고 싶은 것을 매우 분명하다 (하지 MyName로 또는 employeeName이름 지정된 필드의 값을 가져옵니다) 당신이 가지고있는 생각 :

+3

및 +1은 이름 지정에 대한 조언입니다. 프로그램의 복잡성이 커짐에 따라 성과는 큽니다. – Soronthar

+0

@ 대단한 선생님! +1 –

+0

@ Zagorulkin 드미트리, 고마워! ;) – dantuch