这是我的HashMap.
Map<String,MyObject> mymap=new HashMap<String,MyObject>();
Run Code Online (Sandbox Code Playgroud)
我想执行像get和put这样的正常操作,我想再做一次操作,即当对象访问超过一定时间时,地图会自动删除一个对象
它与谷歌番石榴相似吗?如果是,请举个例子.据我读到番石榴doenot支持.
如果没有,有没有办法做到这一点?
编辑:每当我收到用户的GET请求时,我创建myobject并将其存储在map.And如果我从具有相同Key的用户那里得到另一个请求,我从用户那里获取存储的对象,做一些操作并再次存储回来了.
如果键是新键,则映射应返回null
我正在使用 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) 这就是我在做什么
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) 两者都一样吗?
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)
我不确定第二个是否正确,但我在某处读到了