我做的一个聊天室.开始是将用户放到一个List里,但是发现 排序非常麻烦,并且找某在线用户的时候要循环这个LIST找里面的名字与某人的名字相等考虑用数据库存在线名单(我是控制session监听器失效来控制用户下线的情况)所以想问一下.如果以400人为例 当显示在线名单循环的时候
是用List速度快一些 还是 数据库循环ResultSet这种方式快些?
example:
for(int i=0;i<400;i++){
    out.println((String)list.get(0));
}和
ResultSet rs = ps.....("select * from 在线名单")
while(rs.next()){
    rs.getString("name");
}
哪个性能比较好?

解决方案 »

  1.   

    ResultSet rs = ps.....("select * from 在线名单 where 名字=要找的名字")
    while(rs.next()){
        rs.getString("name");

    这样查某一条可能数据库快点吧?
    没测试过,不晓得。
      

  2.   

    我觉得数据库和list是一起用的啊,你在表里面加个字段state用来判断是否在线,在线用1表示,离线用0表示(甚至隐身用2表示),如果用户登录了,然后设置它的state为1,离开了变成0,可能要用到ajax进行实时更新操作
      

  3.   


    把名单存到HASHMAP里??
    那还不是要把HASHMAP再放到LIST里.