在java中存储未知数量的字符串的最快方法是什么?

w1t*_*am3 3 java collections list

我想存储未知数量的字符串,然后按照添加的顺序读取它们.正如我所说,我需要的唯一功能是:

  • 可以添加未知数量的字符串而不会因为调整大小而减慢速度
  • 可以按添加顺序读取元素

问题是我想从trie的一部分输出字符串.因此,在返回字符串之前计算字符串会使操作所需的时间加倍.

(另一个解决方案是使用属性跟踪trie中的字符串数量,但因为我只想返回trie的一部分,这也不是一个完美的解决方案)

Jon*_*eet 7

LinkedList<string> 听起来对我来说是一个不错的选择......

  • 维持秩序
  • O(1)在头部或尾部添加
  • O(1)在头部或尾部移除
  • 便宜的迭代

获取任意元素是很昂贵的,这是不使用它的正常原因......但听起来这在你的情况下不是问题.

  • 当然,复杂性并非一切.假设,为了论证,OP严重需要NM字符串的最快(如毫秒)方法.如果在读取第一个字符串之前已知实际数字,则无需调整数组大小并且是单个分配.类似地,如果M相当小,那么可以通过仅考虑最坏情况的大小来避免重新分配.可能有更多例外.我不是说任何反对你的答案或任何其他答案的东西,只针对这类问题("我需要做X;我不知道Y和Z,但我真的需要把它做得快!"). (3认同)