Чтобы привести простой пример, рассмотрим класс Place
:
public class Place {
//fields
private String name;
private String state;
private int population;
private int squareMileage;
private int elevation;
//constructors
public Place() {
}
public Place(String name, String state) {
this.name = name;
this.state = state;
}
public Place(String name, String state, int population, int squareMileage,
int elevation) {
this.name = name;
this.state = state;
this.population = population;
this.squareMileage = squareMileage;
this.elevation = elevation;
}
//getters and setters
public String getName() {
return this.name;
}
public String getState() {
return this.state;
}
//... (other getters and setters omitted)
//do stuff
}
И класс Places
(HashMap
из Place
объектов):
import java.util.*;
public class Places {
private Map searchablePlaces;
public Places() {
searchablePlaces = new HashMap();
}
public void add(Place value) {
Place key = new Place(value.getName(), value.getState());
searchablePlaces.put(key, value);
}
public Place find(Place key) {
return searchablePlaces.get(key);
}
//override hashCode, equals
//do stuff
}
По сути, мой вопрос:
- Будет ли какая-либо эффективность в
HashMap
для поиска key
, в отличие от поиска value
непосредственно в, скажем, отсортированном ArrayList
?
- Что если
key
был типа String
равен name + state
(или типа String[2]
)?