标签:arraylist file-io text java android
我有快速读取txt文件到ArrayList的问题.如果要读取0.9MB的文件,则必须等待5分钟.如果文件大小为34MB(部分原因是android不接受大于1MB的文件),则完全无法正常工作.
我认为该过程最多只需几秒钟.
这是一个代码:
String word;
public ArrayList<String> dictionary = new ArrayList<String>();
public void setup()
{
try {
AssetManager assetManager = getAssets();
InputStream inputf;
inputf = assetManager.open("dict_1.txt");
reader = new BufferedReader(new InputStreamReader(inputf));
word = " ";
while(word != null)
{
word = reader.readLine();
if (word != null)
dictionary.add(word);
}
if(reader.equals("null")) println("No file found");
} catch (NullPointerException e) {
e.printStackTrace();
println("No file found");
} catch (IOException e) {
e.printStackTrace();
}
}
对不起我的英语.我希望一切都是稳定的.
解决方法:
添加项目时,ArrayList会不断重新分配.这可能会消耗大量的CPU时间,尤其是随着列表的增加,因为一堆指针需要在内存中四处复制.更好的方法是将条目数存储为字典文件的第一项,然后预先分配ArrayList:
dictionary = new ArrayList<String>(numberOfEntries);
更高级的优化是完全不依赖Java集合类的数据结构.根据您的需要,这可能是一个巨大的UTF-8字节数组,可以一次读取到内存中(甚至可以通过内存映射文件进行访问).
标签:arraylist,file-io,text,java,android
来源: https://codeday.me/bug/20191122/2057335.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。