小编use*_*993的帖子

用超时创建HashMap.Will Guava缓存工作?

这是我的HashMap.

Map<String,MyObject> mymap=new HashMap<String,MyObject>();
Run Code Online (Sandbox Code Playgroud)

我想执行像get和put这样的正常操作,我想再做一次操作,即当对象访问超过一定时间时,地图会自动删除一个对象

它与谷歌番石榴相似吗?如果是,请举个例子.据我读到番石榴doenot支持.

如果没有,有没有办法做到这一点?

编辑:每当我收到用户的GET请求时,我创建myobject并将其存储在map.And如果我从具有相同Key的用户那里得到另一个请求,我从用户那里获取存储的对象,做一些操作并再次存储回来了.

如果键是新键,则映射应返回null

java servlets map guava

2
推荐指数
1
解决办法
3196
查看次数

com.google.common.cache.Cache 类未找到错误

我正在使用 Guava 14.0 jar,以下是我的代码

package org.user.module.test;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.concurrent.TimeUnit;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.Cache;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class test
 */
@WebServlet("/test")
public class test extends HttpServlet  {
    private static final long serialVersionUID = 1L;

    Cache<String, Integer> map;

    public test() {
        super();
        // TODO Auto-generated constructor stub
    }

    public void init() throws ServletException
    {
        map=CacheBuilder.newBuilder().
                maximumSize(100).
                expireAfterAccess(10, TimeUnit.MINUTES).
                build();

    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */ …
Run Code Online (Sandbox Code Playgroud)

java servlets guava classnotfoundexception

1
推荐指数
1
解决办法
1万
查看次数

更新缓存的最佳方法:Google Guava

这就是我在做什么

Cache<String,MYClass> cache=CacheBuilder.newBuilder().
                maximumSize(100).
                expireAfterAccess(30, TimeUnit.MINUTES).
                build();

String id="myid";
MyClass obj=cache.getIfPresent(id);
System.out.println(obj.getMyVariable);
obj.setMyVariable("myNewString");
updateCache(id,obj);
myClass obj2=cache.getIfPresent(id);
System.out.println(obj2.getMyVariable);
Run Code Online (Sandbox Code Playgroud)

缓存会更新MyClass对象本身吗?如果没有,哪个是更好的方法?

void update(String id,MyClass obj){
    cache.put(id,obj);
}
Run Code Online (Sandbox Code Playgroud)

要么

void update(String id,Myclass obj){
     cache.invalidate(id);
     cache.put(id,obj);
}
Run Code Online (Sandbox Code Playgroud)

所需输出:

myOldString
myNewString
Run Code Online (Sandbox Code Playgroud)

java caching thread-safety guava

1
推荐指数
1
解决办法
1059
查看次数

多态性:将子类分配给超类

两者都一样吗?

ParentClass object=new ChildClass();

ParentClass object = (ParentClass) new ChildClass();
Run Code Online (Sandbox Code Playgroud)

如果我想创建一个将字符串映射到Children Objects的地图

"dog"->childA;
"cat"->childB
Run Code Online (Sandbox Code Playgroud)

我该如何申报地图?

Map<String,Parent>
or
Mpa<String,T extends Parent>
Run Code Online (Sandbox Code Playgroud)

我不确定第二个是否正确,但我在某处读到了

java generics polymorphism map

0
推荐指数
1
解决办法
772
查看次数