首先,对不起我非常糟糕的英语,但我是意大利语,我不太了解这门语言,我希望你能理解我。
我必须处理一个非常大的字符串数组(或不同类型的数据结构),特别是我必须搜索一个确定的单词(或它的一部分)是否包含在这个数组中,就像字典一样。
我在txt文件中有这个单词列表,有没有办法处理这些单词而不将它们加载到数据结构中?
如果没有,你建议使用什么?
谢谢
答案 0 :(得分:0)
如果我的问题正确,那么您可以逐个读取文件字符并将它们添加到表示1个Word的字符串中(也许构建一个类,这样您就可以创建一个class.getNextWord())然后检查这个单词对阵阵。像:
while(class.hasWords()) {
boolean foundWord = false;
String word = class.getNextWord();
for(int i = 0; i < words.length; i++) {
if(word.compareTo(words[i])==0) {
foundWord = true;
break;
}
}
...doSomething...
}
哪个类是我上面建议的
答案 1 :(得分:0)
试试这个,它可以帮到你..
public String stringArrayCompare()
{
for(i=0; i<stringArrayName.length;i++)
{
if(StringArrayName[i].matches(.*+"String_Pattern"+.*)// .* indicates any number of characters at the start of the string or in the end, use as per your code requirement.
{
return StringArrayName[i];
}
}
}
答案 2 :(得分:0)
正如我已经写过的,我在我开发的后缀树版本中找到了解决方案。 如果它有用,我在这里引用代码:
/* developed by Christian Traina
* email address: crissstian96@gmail.com
*/
public class Alpha {
private Alpha[] alpha = new Alpha[26];
private boolean mark = false;
// SEARCH
public boolean search(String s){
return search(s.toCharArray());
}
public boolean search(char[] s){
return search(s,0);
}
private boolean search(char[] s, int p){
if(p==s.length)
return mark;
if(alpha[s[p]-97]!=null)
return alpha[s[p]-97].search(s, p+1);
else
return false;
}
//MATCHES
//THE ASTERISK MEANS ANY CHARACTERS
//FOR EXAMPLE, IF YOU WANT TO SEARCH A WORD OF SIX LETTERS THAT BEGINS WITH THE LETTER A,
//YOU HAVE TO PASS "A*****"
public boolean matches(String s){
return matches(s.toCharArray(), 0);
}
private boolean matches(char[] s, int p){
if(p==s.length)
return mark;
if(s[p]=='*'){
for(int i=0; i<26; i++)
if(alpha[i]!=null && alpha[i].matches(s,p+1))
return true;
return false;
}
else if(alpha[s[p]-97]!=null)
return alpha[s[p]-97].matches(s, p+1);
else
return false;
}
// ADD
public void add(String s){
add(s.toCharArray(), 0);
}
public void add(char[] s){
add(s,0);
}
private void add(char[] s, int p){
if(p==s.length)
mark=true;
if(p>=s.length)
return;
if(alpha[s[p]-97]==null)
alpha[s[p]-97] = new Alpha();
alpha[s[p]-97].add(s, p+1);
}
//PRINT
//IT PRINTS ALL THE ITEMS OF THE TREE
public void print(){
for(int i=0; i<26; i++)
if(alpha[i]!=null){
alpha[i].print(Character.toString((char)(i+97)));
}
System.out.println();
}
private void print(String str){
if(mark)
System.out.print(str+" ");
for(int i=0; i<26; i++)
if(alpha[i]!=null){
alpha[i].print(str+Character.toString((char)(i+97)));
}
}
}
答案 3 :(得分:-1)
只需使用输入/输出流将文件中的单词加载到不同的数组,然后使用您要搜索的单词进行搜索