在java应用程序中,我要求用户定义字符串值,然后继续将其他字符串值附加到原始值...
用户可以定义多个不同的命名字符串..
从hashmap,数组列表和链表中,我应该根据以下标准使用哪一个:
(1)大多数内存效率高 (2)每个字符串值的最大可能空间
所有3个选项(hashmap / array list / linked list)中单个字符串值的最大可能大小是多少?
答案 0 :(得分:5)
如果用户输入字符串,您不必担心。最大字符串长度超过20亿。
有史以来最快的打字速度,每分钟216字,
http://en.wikipedia.org/wiki/Words_per_minute
这意味着即使是快速打字员也需要一分钟才能写出1 K的字母。写一个最大长度的字符串将需要1491天,不停。 (假设他们的键盘,计算机或用户在尝试时死亡)
您极不可能需要最有效的数据结构,并且使用最简单和最明显的选择是更好的方法。 (再次因为用户无法输入足够快的内容而无法解决问题)
Kindle可以在成本低于100磅的设备中存储数千本书。用户可以写下他们的所有内容而不是写得足以填满一个小巧便宜的移动设备。
答案 1 :(得分:0)
节省您的时间并使用StringBuilder或StringBuffer(如果您需要线程安全)。
答案 2 :(得分:0)
您需要ArrayList<Stringbuffer>
答案 3 :(得分:0)
如果您正在创建一个文本编辑器,用户可以跳转到字符串中的任何位置并开始更改它,则间隙缓冲区是一个相当不错的数据结构:http://en.wikipedia.org/wiki/Gap_buffer