代码之家  ›  专栏  ›  技术社区  ›  JoReyner

单字符元素的空间差异:列表<字符>与列表<字符串>

  •  0
  • JoReyner  · 技术社区  · 1 年前

    不确定我问的是否正确,但有人知道List<字符>并且列表<字符串>是否会为一个字符元素(即,每个字符元素或字符串只有一个字符)保留不同数量的内存空间?

    我希望List<字符>以容纳更少的内存空间,但由于Character是一个类而不是基元char,我想知道List<字符>则将保持与List<字符串>。

    2 回复  |  直到 1 年前
        1
  •  1
  •   Hulk    1 年前

    这个 List istself只包含两种情况下的引用,因此大小相同。

    这并不意味着无论如何都不会对整体内存产生任何影响,但这将取决于应用程序的其余部分。

    无论如何,这些值可能已经存在于内存中,并且根据它们的值以及它们在其他地方的使用方式,可能会涉及缓存。字符串可能是 interned ,和频繁字符也可以 cached 通过实现,例如,如果它们是用 valueOf() :

    此方法将始终缓存'\u0000'到'\u007F'(包括这两个值)范围内的值,并且可能缓存此范围之外的其他值。。

        2
  •  1
  •   Torben    1 年前

    比较它们没有意义,因为它们执行不同的功能。

    A. String 例如,可以表示单个 Character 不能使用字符串来表示单数字符是令人困惑的,因为无论谁看到一个字符串,都会认为它包含多个字符。它引入了不必要的误差矢量,因为您必须确保 处处 没有多字符字符串进入列表。

    因此,如果您只需要支持由单个字符组成的数据,那么使用 List<Character> 。如果你关心记忆力,那么使用 char[] .

    https://en.wikipedia.org/wiki/Program_optimization#When_to_optimize