相关疑难解决方法(0)

java如何在引擎盖下实现字符串的flyweight模式?

如果你有两个String实例,并且它们是相同的,那么在Java中它们将共享相同的内存.这是如何在引擎盖下实施的?

编辑:我的应用程序使用大量的String对象,其中许多是相同的.使用Java String常量池的最佳方法是什么,以避免创建自定义flyweight实现?

java design-patterns flyweight-pattern

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

Java中的flyweight字符串何时有用?

我理解java的字符串实习的基本思想,但我想弄清楚它发生在哪些情况,以及我需要做哪些自己的轻量级.

有点相关:

他们一起告诉我这String s = "foo"很好而且String s = new String("foo")很糟糕,但没有提到任何其他情况.

特别是,如果我解析一个有很多重复值的文件(比如一个csv),Java的字符串实习会覆盖我还是我需要自己做一些事情?关于字符串实习是否适用于我的其他问题,我得到了相互矛盾的建议


完整的答案有几个片段,所以我在这里总结一下:

默认情况下,java仅实现编译时已知的字符串. String.intern(String)可以在运行时使用,但它执行得不是很好,因此它只适用于较小数量的Strings,你肯定会重复很多次.对于较大的Strings系列,它是拯救的番石榴(参见ColinD的回答).

java string design-patterns

4
推荐指数
2
解决办法
3887
查看次数

标签 统计

design-patterns ×2

java ×2

flyweight-pattern ×1

string ×1