日期:2014-05-20  浏览次数:20648 次

这个怎么优化下?

HashMap<String, Server> hostname2server = new HashMap<String, Server>();
HashMap<Integer, Server> id2server = new HashMap<Integer, Server>();
HashMap<String, Server> ip2server = new HashMap<String, Server>();


缓存了3份server的信息,因为要根据hostname,id,ip来获取server信息。
有其他好的办法吗?
------解决方案--------------------
server很多么?不多的话,直接用list存储,然后遍历不就行了?
------解决方案--------------------
把hostname和ip做成server类的成员变量,id当成hashmap的key,server类放入value不就行了么


------解决方案--------------------
引用:
Quote: 引用:

server很多么?不多的话,直接用list存储,然后遍历不就行了?


server不多,遍历还不如存3份了取起来方便,要频繁的读取



//没看出来多么麻烦
public class MapTest {
public static class Server{
private int id;
private String ip;
private String name;
}
public static class ServerFactory{
private ServerFactory(){}
private static List<Server> servers = new ArrayList<Server>();
public static Server getById(int id){
return null;
}
public static Server getByName(String name){
return null;
}
public static Server getByIp(String ip){
return null;
}
}
public static void main(String[] args) {
Server server = ServerFactory.getById(1);
}
}

------解决方案--------------------
LZ你扣细节的做法很值得称赞,但是你扣的这个地方完全不会对你的系统造成性能损伤,除非你的Map里有几十万几百万个对象