gpt4 book ai didi

java - 如何在 Android 中迭代非常大的字符串数组?

转载 作者:行者123 更新时间:2023-12-01 08:02:34 25 4
gpt4 key购买 nike

我对 Android 编程还很陌生。我正在尝试创建一个基本应用程序,它将向用户显示他们可以使用输入的字母“机架”组成的可能的“拼字游戏”单词(基于 https://openhatch.org/wiki/Scrabble_challenge 的 Python 项目)。

“拼字词典”文本文件的每一行都包含一个单独的单词,该单词被读入字符串(单词)数组中。 该部分工作正常

接下来,我想遍历单词数组,对于每个单词,我想遍历其中的字符,测试每个字符是否包含在用户的字母“机架”中。如果是,则将该字母从“架”上移除。然后,条件语句将当前单词添加到有效单词的ArrayList(如果通过)中。

但是,单词数组包含大约 270,000 个单词。我想这就是我的问题的根源。我尝试在单独的线程中运行此进程,但应用程序迭代单词数组的速度非常慢,并且最终由于内存不足错误而崩溃。 p>

这是我的单词分析代码:

public void wordFinder(){
Runnable runnable = new Runnable(){
public void run(){
// Loop through each word in wordList
for(int i = 0; i < wordList.length; i++){
// Number of letters that are removed from the user's rack
removed = 0;
// Create a temporary rack of letters that can be modified within
// the loop
temp_rack = input_rack;
// Loop through each letter of the current word
for(int j = 0; j < wordList[i].length(); j++){
// Save the letter at the position j of the ith word
c = wordList[i].charAt(j);
// Does the user's rack contain this letter?
if(temp_rack.contains(Character.toString(c))){
// Replace the first occurrence of the letter in the user's rack
temp_rack.replaceFirst(Character.toString(c), "");
// Increment the counter for number of removed letters
removed++;
}
}
// If the number of removed letters matches the length of the ith word,
// the word can be created from the user's rack, and so it is valid.
// Append it to the temporary valid word list.
if(removed == wordList[i].length()){
temp_valid_word_list.add(wordList[i]);
}
}
// The valid word list is an array representation of the ArrayList
valid_word_list = temp_valid_word_list.toArray(new String[0]);
}
};
Thread mythread = new Thread(runnable);
mythread.start();
}

其他信息:

  • wordList 是一个标准字符串数组(大约有 270,000 个元素)
  • input_rack 是从 EditText 框中捕获为字符串的用户输入
  • wordFinderonClick 监听器调用

最佳答案

没有理由将此类数据存储在数组中。尝试使用SQLite,及其内置的搜索功能,这是更合适的方法。

关于java - 如何在 Android 中迭代非常大的字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24121589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com