【发布时间】:2014-03-01 15:57:42
【问题描述】:
我有一个循环搜索字典,提取我过滤的单词,然后将其放入 arrayList。然后我想优化我的搜索并从这个 arrayList 中提取单词并将其放在另一个中。有没有生成arrayList的方法?通常我正在尝试做的事情我可能不知道我可能需要多少个数组列表。
我有一个手机键盘,每个数字分配 3-4 个字母。例如数字 1(a,b,c)。我正在尝试编写一种方法,例如,当我输入 1234 时,我希望它借助程序可以访问的单词库来预测我要编写的单词。所以,当我按 1 时,我会从库中提取所有以 a、b 或 c 开头的唯一单词。然后,我考虑已按下的数字 2 (d,e,f),并从前一个列表中提取所有以 a、b、c 开头但具有第二个字符 d、e 或 f 的单词。我正在做的是尝试生成新的数组列表来放入新的过滤词。我只是不知道如何自动生成创建数组列表。
我的示例代码:
//cycles through each possible alaphabetical characters represented by the numbers that constitute "signature"
for (int countSignature = 0; countSignature < signature.length();countSignature++){
if (signature.codePointAt(countSignature) == 50) {// Representing 2
for (int j = 0; j < set1.size(); j++){ //iterating through the array for each word that starts with a,b, or c.
if (arraySet1[j].codePointAt(countSignature) == 97
|| arraySet1[j].codePointAt(countSignature) == 98
|| arraySet1[j].codePointAt(countSignature) == 99) {
arrayListSet2.add(arraySet1[j]);
//need to generate new arrayList for the next round of filtering.
f(j++)
}
}
}else if(signature.codePointAt(countSignature) == 51){ // Representing 3
for (int j = 0; j < set1.size(); j++) {
if (arraySet1[j].codePointAt(countSignature) == 100
|| arraySet1[j].codePointAt(countSignature) == 101
|| arraySet1[j].codePointAt(countSignature) == 102) {
arrayListSet2.add(arraySet1[j]);
}
}
}else if(signature.codePointAt(countSignature) == 52){ // Representing 4
for (int j = 0; j < set1.size(); j++) {
if (arraySet1[j].codePointAt(countSignature) == 103
|| arraySet1[j].codePointAt(countSignature) == 104
|| arraySet1[j].codePointAt(countSignature) == 105) {
arrayListSet2.add(arraySet1[j]);
}
}
}else if(signature.codePointAt(countSignature) == 53){ // Representing 5
for (int j = 0; j < set1.size(); j++) {
if (arraySet1[j].codePointAt(countSignature) == 106
|| arraySet1[j].codePointAt(countSignature) == 107
|| arraySet1[j].codePointAt(countSignature) == 108) {
arrayListSet2.add(arraySet1[j]);
}
}
}else if(signature.codePointAt(countSignature) == 54){ // Representing 6
for (int j = 0; j < set1.size(); j++) {
if (arraySet1[j].codePointAt(countSignature) == 109
|| arraySet1[j].codePointAt(countSignature) == 110
|| arraySet1[j].codePointAt(countSignature) == 111) {
arrayListSet2.add(arraySet1[j]);
}
}
}else if(signature.codePointAt(countSignature) == 55){ // Representing 7
for (int j = 0; j < set1.size(); j++) {
if (arraySet1[j].codePointAt(countSignature) == 112
|| arraySet1[j].codePointAt(countSignature) == 113
|| arraySet1[j].codePointAt(countSignature) == 114
|| arraySet1[j].codePointAt(countSignature) == 115){
arrayListSet2.add(arraySet1[j]);
}
}
}else if(signature.codePointAt(countSignature) == 56){ // Representing 8
for (int j = 0; j < set1.size(); j++) {
if (arraySet1[j].codePointAt(countSignature) == 116
|| arraySet1[j].codePointAt(countSignature) == 117
|| arraySet1[j].codePointAt(countSignature) == 118) {
arrayListSet2.add(arraySet1[j]);
}
}
}else if(signature.codePointAt(countSignature) == 57){ // Representing 9
for (int j = 0; j < set1.size(); j++) {
if (arraySet1[j].codePointAt(countSignature) == 119
|| arraySet1[j].codePointAt(countSignature) == 120
|| arraySet1[j].codePointAt(countSignature) == 121
|| arraySet1[j].codePointAt(countSignature) == 122) {
arrayListSet2.add(arraySet1[j]);
}
}
}else{
System.out.println("");
}
}
【问题讨论】:
-
您可能需要重新考虑您的逻辑..
-
逻辑不清楚。你需要更多地了解这一点。
-
我在上面的编辑中添加了更多的 cmets,因为我无法在此处提供它们。
标签: java