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

解决方案 »

  1.   

    把hostname和ip做成server类的成员变量,id当成hashmap的key,server类放入value不就行了么
      

  2.   

    你想根据hostname和ip来搜索server的话那就遍历hashmap就行了
      

  3.   


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

  4.   


    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);
    }
    }
      

  5.   


    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);
    }
    }

    嗯,包装起来不错,thanks要么耗费CPU,要么费内存,我再衡量下
      

  6.   

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

  7.   

    Map<ServerInfo, Server>();class ServerInfo {
        String hostname;
        String ip;
        String  id;    @Override
        public void equals() {
             .....
        }
    }