0

我想在 java 中创建缓存来存储用户会话。它类似于缓存,例如将为每个用户存储 5 个元素。我需要某种必须能够记住这些数据的 java 数据结构。到目前为止,我创建了这个 Java 代码:

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class SessionCache {

    public SessionCache() {
    }

    /* Create object to store sessions */
    private List<ActiveSessionsObj> dataList = new ArrayList<>();

    public static class ActiveSessionsObj {
        private int one;
        private int two;
        private int three;
        private int four;
        private int five;

        private ActiveSessionsObj(int one, int two, int three, int four, int five) {
            throw new UnsupportedOperationException("Not yet implemented");
        }
    }

    public List<ActiveSessionsObj> addCache(int one, int two, int three, int four, int five){

        dataList.add(new ActiveSessionsObj(
                        one,
                        two,
                        three,
                        four,
                        five));
          return dataList;    
    }   

}

我是 java 新手,我需要帮助我如何向结构中添加数据以及如何从结构中删除数据。我需要使用密钥来执行此操作。这可能吗?或者是否有更合适的数据结构来根据 mu 需要存储数据?

最良好的祝愿

4

3 回答 3

6

大概每个用户都有一个唯一的 id,所以一个Map实现似乎是一个明智的选择,其中键是用户 id,值是ActiveSessionsObj

Map<String, ActiveSessionsObj> cache =
    new HashMap<String, ActiveSessionsObj>();

put()有关从 a 添加 ( ) 和删除 ( remove()) 元素的信息,请参见 Javadoc Map

public void addCache(String user_id,int one,int two,int three,int four,int five)
{
    // You may want to check if an entry already exists for a user,
    // depends on logic in your application. Otherwise, this will
    // replace any previous entry for 'user_id'.
    cache.put(user_id, new ActiveSessionsObj(one, two, three, four, five));
}
于 2012-05-01T10:36:42.710 回答
2

基本上,您不需要 in 中的列表SessionCache,只需定义一些私有属性,并提供一些重新get set使用的方法来访问这些属性。

于 2012-05-01T10:36:27.457 回答
2

您应该使用Map接口的实例来存储数据对象。您需要确保每个用户都有一个唯一的密钥;如果你这样做,你可以使用这个键作为HashMap的输入

此外,为了使您的 SessionCache 更少依赖于 ActiveSessionsObj 的内部细节,您应该使 addCache 方法采用 ActiveSessionsObj 之一。使用地图实现,这看起来更像:

public void addCache(String key, ActiveSessionsObj data){

    dataMap.put(key, data);

}   

最好不要从 SessionCache 返回 Map,否则会破坏缓存的封装

于 2012-05-01T10:46:32.270 回答