当前位置: 首页 > 面试题库 >

WeakHashMap是否具有java.util.concurrent等效项?

常元章
2023-03-14
问题内容

是否可以使用Collections.synchronizedMap()并发时保持正确性来重写下面的代码?

Collections.synchronizedMap(new WeakHashMap<Class, Object>());

即从java.util.concurrent是否有可以代替的东西?请注意,仅替换为

new ConcurrentHashMap<Class, Object>(new WeakHashMap<Class, Object>()));

显然行不通


问题答案:

Guava的CacheBuilder类使您可以轻松地做到这一点。

CacheBuilder.newBuilder().weakKeys().build()

请注意,在您使用实例的情况下,这会将键相等语义更改为,==而不是.equals()将其替换为无关紧要,Class但这是一个潜在的陷阱。



 类似资料:
  • 问题内容: 有许多问题询问LINQ是否有Java等效项。但是他们中的大多数人错误地指出没有任何东西。 问题答案: 该库提供了完整的LINQ API:https : //github.com/nicholas22/jpropel-light 它使用功能样式的构造来做到这一点,并且还使用延迟执行。

  • 我是一个JaxB noob,但我学到了很多关于如何配置Jackson的知识。我正在为一些域对象类添加XML序列化/反序列化支持。我有一个类类型,它根据必须指定的上下文进行不同的序列化/反序列化。 通过编写HandlerInstantiator的自定义实现,我在Jackson中实现了这一点。自定义实现将上下文作为构造函数参数。当这些上下文敏感对象需要序列化器或反序列化器时,提供它的方法会使用构造处理

  • 问题内容: c#是否具有Java Runnable接口的等效项? 如果不能,那么如何实现?或者根本不需要? 谢谢。 问题答案: 不。C#处理线程的方式与Java不同。您不必创建Thread类的子类,而只是创建一个新的System.Threading.Thread对象,并向其传递ThreadStart委托(这是工作所在的函数)。

  • 问题内容: 我将Java转换为C#,并具有以下代码(请参阅JavaContext中有关其使用的讨论。一种方法可能是创建一个单独的文件/类,但是是否有C#idom保留了Java代码中的意图? 问题答案: 看看这个 http://blogs.msdn.com/oldnewthing/archive/2006/08/01/685248.aspx 我正在专门看 换句话说,Java内部类是C#无法使用的语法

  • 问题内容: 我是Go的新手,来自Node.JS。 在Node中,如果我运行此命令: 由于超出了最大调用堆栈大小,程序将崩溃。 如果我在Go中这样做: 这将运行并打印到标准输出。 我的问题是: 有没有超过我给出的Go示例失败的最大呼叫数量? 这样的代码在Go中是反模式吗? 问题答案: 在Go中,goroutines没有固定的堆栈大小。取而代之的是,它们从很小的大小开始(大约为4KB),并在需要时增大

  • 问题内容: 我想从数据库中获取一个对象(如果已存在)(基于提供的参数),或者如果不存在则创建它。 Django的(或)做到了。SQLAlchemy中是否有等效的快捷方式? 我目前正在像这样明确地写出来: 问题答案: 基本上就是这样做的方法,没有快捷方式可供使用的AFAIK。 你可以将其概括为: