名前、年齢、住所、ドブ、賃金、メールアドレスなどの従業員の詳細のストアを作成するときに使用するのに最適なコレクションは何でしょうか。ストアには、追加、編集、削除、すべての削除、searchByなどの必要不可欠なものがすべて必要です。
3 に答える
おそらく高速検索が必要になるので、検索したいフィーンドとしてキーを使用したハッシュ構造が最善の解決策になる可能性があります。たとえば、名前で検索する場合は、次のようなクラスを作成できます。
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.
}
employees
データ構造を使用して、ニーズに基づいて必要なメソッドを実装します。名前で検索する場合は、名前をキー文字列にすることができます。
残念ながら、インデックスとは異なるフィールドで検索するには線形検索が必要になり、エントリ数が非常に多い場合は低速になります。
以下のような従業員エンティティのクラスを作成するだけです。
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
}
これで、 Employeeオブジェクトのコレクションを作成できます。
ArrayList<Employee> employees=new ArrayList<Employee>();
または、他のコレクションを使用することもできます。
次に、必要なメソッドのロジックを実装する必要があります。
Update(), Delete()
HashMap
またはを使用Map
して検索機能を高速化する必要があります。
使用する特定の「最適な」コレクションは、アクセスのニーズとデータの制約によって異なります。ただしEmployeeStore
、複数の方法でアクセスできるように、複数のコレクションを1つのクラスにカプセル化することもできます。
たとえば、名前で検索する必要があり、名前が一意であることを保証できる場合は、Map<String, Employee>
名前をキーとして保存すると、特定の名前の従業員をすばやく見つけることができます。名前が一意であることが保証されていない場合は、代わりに。が必要になる場合がありますMap<String, List<Employee>>
。
他のフィールドに基づく検索の場合、適切なキーを使用して他のマップを維持できます。
add
もちろん、メソッドの実装では、remove
使用edit
するすべてのマップを適切に更新する必要があります。
検索がキーによる単純な検索よりも複雑な場合、またはデータが大きい場合は、EmployeeStore
コレクションを使用するだけでなく、データベースでバックアップする必要があります。