2016-10-26 8 views
1

В основном методе EmployeeSearch создайте массив из нескольких объектов Employee, в том числе один с вашей первой фамилией & и с использованием вашего идентификатора электронной почты в качестве идентификатора. Используйте метод addEmployees, чтобы поместить каждого Сотрудника в Карту и Набор. Используйте расширенный цикл. (Вы можете использовать метод getID для извлечения идентификатора сотрудника для использования в качестве ключа для Карты.)Ввод массива объектов в карту и набор

Поиск на карте. Подскажите пользователю любую информацию, необходимую для поиска Карты. Поиск с использованием метода get.

Я пробовал несколько способов, не уверен, какой путь правильный; Я прокомментировал, что я думаю, это возможное решение, но я не уверен, что еще делать.

Я правильно создаю массив объектов? например: ArrayList employees = new ArrayList(); или сотрудники сотрудников = новый сотрудник («Джон», «Боумен», «970») ;? Затем мне нужно выполнить поиск, что и должен делать метод addEmployees, но я продолжаю получать ошибки.

public class EmployeeSearch { 

    public static void main(String[] args) { 

     public Set<Employee> empSet = new HashSet<Employee>(); 

     public Map<String, Employee> empMap = new HashMap<String, Employee>(); 
     // empMap.put("John", "970"); 

     ArrayList<String> employees = new ArrayList<String>(); 
     //empMap.put("John", employees); 
     employees.add("John"); 
     employees.add("Bowman"); 
     employees.add("970"); 
     System.out.println("Employee:"); 

     for (String employeeName : employees){ 
      System.out.println(employeeName); 
     } 

     //Employee employees = new Employee("John", "Bowman", "970"); 
     //empSet.add("John", "Bowman", "970"); 
    } 

    public void addEmployees(Employee[] employees) { 
     // empSet.add(employees[0]); 
     // empMap.put(employees[0].getID(),employees[0]); 
     // for(empSet.add(employees[e])):empMap.put(employees[e]){ 

    } 

} 

---------------------- ОБНОВЛЕНИЕ -------------------- ------------------------

public class EmployeeSearch { 
public static void main(String[] args) { 
    Set<Employee> empSet = new HashSet<Employee>(); 

    public Map<String, Employee> empMap = new HashMap<String, Employee>(); 

    public Employee emp1 = new Employee("John", "Bowman", "970"); 

    ArrayList<Employee> employees = new ArrayList<Employee>(); 

    employees.add(emp1); 
    empMap.put("970", emp1); 


    for (Employee employeeName : employees) { 
     System.out.println(employeeName); 
    } 
} 




    public void addEmployees(Employee[] employees){ 
     empSet.add(addEmployees(employees)); 
     empMap.put(employees.getID(), addEmployees(employees)); 
     Employee searchedFor = empMap.get(id); 
     if (searchedFor == null) { 
      System.out.println(); 
     }else{ 
       System.out.println(); 
      } 
     } 

     } 

Я продолжаю получать ошибки «не могу разрешить символ», и он говорит «Использовать метод addEmployees для поместите каждого Сотрудника в Карту и Набор. " Я уверен, что сделал это в основном и не могу понять, как поместить его в метод addEmployees.

+3

Можете ли вы обрезать вопрос до того, что вы на самом деле спрашиваете? – bradimus

+2

Что вы подразумеваете под «ударом стены». Есть ли конкретная ошибка, которую вы получаете? Или конкретный шаг, который вы не знаете, как это сделать? Каков ваш реальный вопрос? –

+1

Что заставляет вас думать, что вы хотите использовать 'ArrayList' и/или массив? Мне кажется, что это сложно усложнить. –

ответ

1

Если вы пытаетесь добавить сотрудника в список массива, все, что вам нужно сделать, это:

//Create a single employee 
Employee employee = new Employee("John", "Doe", "Address"); 

//Create array list 
ArrayList<Employee> employees = new ArrayList<Employee>(); 

//Add employee to list 
employees.add(employee); 

//repeat as needed for each employee 

Если вы хотите HashMap вы делаете:

//Create a single employee 
Employee employee = new Employee("John", "Doe", "Address"); 

//Create array list 
HashMap<String, Employee> employees = new ArrayList<String, Employee>(); 

//Add employee to list 
employees.put("[email protected]", employee); 

//repeat as needed for each employee 

Если бы это было Я хотел бы использовать HashMap, как вы можете найти его очень легко, используя адрес электронной почты в этом случае, выполнив:

//search for employee 
    if(employees.containsKey("[email protected]")){ 
    //retrieve employee object 
    Employee myGuy = employees.get("[email protected]"); 

    } 
+1

Более условно: не используйте 'containsKey()' перед 'get()', просто проверьте, является ли 'myGuy' значением null, чтобы узнать, был ли этот ключ (это работает до тех пор, пока вы не ставите нулевые значения в свой HashMao , который, я полагаю, вы не захотите делать). –

1

основной фокус в том, - лет у угадали правильно:

Employee oneEmployee = new Employee("John", "Bowman", "970"); 
    empSet.add(oneEmployee); 
    empMap.put(oneEmployee.getID(), oneEmployee); 

Это требует: Ваш Employee класс должен иметь соответствующий конструктор 3-аргумент (возможно, у него уже есть, в противном случае написать один). И в дополнение к empSet вам необходимо объявить empMap.

EDIT:

Я понимаю из Вашего комментария, что вам нужно передать массив сотрудников к addEmployees метода. Существует множество способов создания и заполнения такого массива. Самый простой способ - использовать инициализатор массива:

Employee[] allEmployees = { new Employee("John", "Bowman", "970"), 
          new Employee("John", "Rawsick", "6"), 
          new Employee("BlackHat", "Samurai", "95") 
          }; 

Сделайте массив столько, сколько пожелаете.

Внутри метода addEmployees вы можете использовать так называемый расширенный цикл for (другое требование в задании), чтобы пройти через сотрудников и добавить каждый из них в набор и карту, используя базовый трюк, который я показал на вершина.

Поиск empoyee по ID - это поиск на вашей карте.Предположим, у вас есть String id, содержащий данные, введенные пользователем - вы уже сказали, чтобы использовать метод get:

Employee employeeSearchedFor = empMap.get(id); 
    if (employeeSearchedFor == null) { 
     System.out.println("No employee with ID " + id + " found"; 
    } else { 
     // print the employee 
    } 

Отказ от ответственности: я не компиляции и запуска кода, может быть опечатка где-то.

+0

Я должен написать метод с этими параметрами .. private void addEmployee (Employee [] сотрудники) {который также использует массив правильно? – Rawsick

+0

@Rawsick, вы правы относительно массива. Я обновил свой ответ. –