2012-06-30 14 views
1

Hey je me demandais quelle serait la meilleure collection à utiliser lors de la création d'un magasin pour les détails de l'employé tels que le nom, l'adresse de l'âge, dob, les salaires et l'adresse e-mail. le magasin a besoin de tous les éléments essentiels tels que ajouter, modifier, supprimer, supprimer tout et searchBy.Collections Java. Collection pour un magasin d'employés

+0

Quels volumes d'employés attendez-vous? – Ian

Répondre

3

Eh bien, vous voudrez probablement une recherche rapide, donc une structure de hachage avec la clé comme le démon que vous souhaitez rechercher pourrait être la meilleure solution. Par exemple, si vous voulez effectuer une recherche par nom, vous pouvez créer une classe comme ceci:

public class EmployeeStore { 
    private Map<String, Employee> employees; 

    public EmployeeStore() { 
     employees = new HashMap<String, Employee>(); 
    } 

    public void add(Employee e) { 
     employees.add(e.getName(), e); 
    } 

    public Employee searchByName(String name) { 
     return employees.get(name); 
    } 

    // etc. 
} 

et mettre en œuvre les méthodes nécessaires en fonction de vos besoins en utilisant la structure de données employees. Si la recherche est effectuée par nom, vous pouvez avoir le nom comme chaîne clé.

Malheureusement, la recherche par un champ différent de l'index nécessitera une recherche linéaire qui sera lente si vous avez un grand nombre d'entrées.

2

Il suffit de créer une classe pour votre entité employé comme quelque chose ci-dessous:

public class Employee 
{ 
String name; 
public void setName(String nm) 
{ 
this.name=nm; 
} 
public String getName() 
{ 
return this.name; 
} 
//Other variables and associated getter and setters 
} 

Maintenant, vous pouvez créer une collection de employés objets:

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

Ou vous pouvez utiliser d'autres collections vous vouloir.

Ensuite, vous avez besoin de mettre en œuvre des logiques pour les méthodes que vous voulez comme

Update(), Delete() 

Vous devez utiliser HashMap ou Map pour une capacité de recherche plus rapide!

1

La "meilleure" collection spécifique à utiliser dépendra des besoins d'accès et des contraintes de données. Mais vous pouvez encapsuler plusieurs collections dans une seule classe EmployeeStore pour l'accès de plusieurs façons.

Si vous avez besoin par exemple d'effectuer une recherche par nom et que vous pouvez garantir que les noms sont uniques, un Map<String, Employee> avec des noms stockés en tant que clé vous permettra de trouver rapidement un employé avec un prénom. Si les noms ne sont pas garantis être uniques, vous devrez peut-être utiliser un Map<String, List<Employee>>.

Pour les recherches basées sur d'autres champs, vous pouvez gérer d'autres cartes avec les clés appropriées. Les implémentations de vos méthodes, remove et edit devraient bien sûr mettre à jour toutes les cartes que vous utilisez de manière appropriée. Si vos recherches sont plus complexes que de simples recherches par clé, ou si vos données sont volumineuses, vous devrez probablement sauvegarder votre EmployeeStore avec une base de données au lieu de simplement utiliser des collections.

Questions connexes