【问题标题】:How to store sentences in a temporary array in Java?如何在 Java 中将句子存储在临时数组中?
【发布时间】:2011-07-05 17:21:17
【问题描述】:

目前,我正在从文本文件中刮出一大块数据(段落/字符串)并将其写入新文件。但是,我计划稍后添加一些条件,因此希望能够取出这块数据并将其仅存储在临时数组中,然后在满足条件时写入文件。但是,我不确定如何在事先不知道数组大小的情况下将其写入数组。

有人有什么想法吗?

【问题讨论】:

  • 不知道数组大小的可以使用ArrayList。

标签: java arrays string temporary-files temporary-objects


【解决方案1】:

不要使用数组。使用可以动态增长的 String 类型的集合,例如 ArrayList。以下是一些快速代码示例:Sample 1Sample 2

Java 文档中关于 ArrayList 内存管理的一些说明:

容量是数组的大小 用于存储元素 列表。它总是至少一样大 作为列表大小。作为元素 添加到 ArrayList,它的容量 自动增长。的详细信息 增长政策未明确 除了添加元素之外 具有不变的摊销时间成本。

一个应用程序可以增加 ArrayList 实例的容量 在添加大量之前 使用 ensureCapacity 的元素 手术。这可能会减少金额 增量重新分配。

请注意,即使是文档也没有具体说明内部管理的方式。

【讨论】:

  • 我在考虑一个数组列表,但我对数组或数组列表的问题是,字符串的大小是否有限制?整个段落是否会被视为单个字符串?
  • 字符串和集合的限制往往非常大,想想 gigs 然后不要考虑限制。他们很少担心。至于如何解释段落,这取决于您,并且取决于数据文件的格式。
  • 好的,谢谢。我会尝试使用 ArrayList 看看效果如何。
【解决方案2】:

在 Java 中,ArrayList(或任何其他类型的 Java 集合)可以为您处理所有内存管理:

ArrayList<String> strings = new ArrayList<String>();

如果要添加字符串:

strings.add("New String");

如果要获取某个索引处的字符串(在本例中为索引 1):

strings.get(1);

ArrayList 类中还有很多方法。

【讨论】:

    【解决方案3】:

    您确实需要一个动态增长的集合。 ArrayList是第一个想到的;在内部,它与常规数组非常相似,因此如果需要,它可以提供快速随机访问。 LinkedList 可能更适合如果您无法估计最终需要的元素数量,前提是您只需要顺序访问其元素(可以使用随机访问,但不会很快) .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多