举个简单的例子,考虑一个Place
类:(Java)使用Maps时,键和值是否有相同的类型?
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
类(Place
的HashMap
一个对象):
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
}
从本质上讲,我的问题是:
- 会有效率吗?,而不是直接搜索
value
,比方说,排序的ArrayList
? - 如果
key
类型String
等于name + state
(或String[2]
类型)会怎么样?
地图的参数在'add'和'find'方法中是不同的。将''存储在'add'中,但尝试将'Place'作为''获取到'find'中。 –
adarshr
2011-03-23 23:10:18
@adarshr我用2个字符串来构建一个'Place'对象,然后添加'Place'和一个作为arg传递给'add'方法的对象,所以它应该是''。 –
TheBlackKeys
2011-03-23 23:51:24