gpt4 book ai didi

java - contains() 匹配两个字符串的问题

转载 作者:行者123 更新时间:2023-12-02 04:14:34 27 4
gpt4 key购买 nike

考虑到我们有 String包含三个单词,例如 "kids story book"我们将这些单词添加到 HashMap<String, Integer> 中而字符串部分包含单词,整数部分包含单词在字符串中的位置,即 1、2 和 3。还假设还有另一个相同类型的 HashMap这是由一系列分组的单词组成的字段。考虑每组单词都有一个共同的整数值作为 ID,表明它们属于同一组。我的目标是研究第二个 HashMap为了找到包含 kids 的任何字符串, storybook然后返回该单词及其唯一的整数 ID。这是我这样做的代码:

       String keyword="kids story book";
static HashMap<String, Integer> tempp = new HashMap<>();
static HashMap<String, Integer> stringToint = new HashMap<>();

//File is .txt file which contains some characters at each line
FileOutputStream Fcategorize=new FileOutputStream(File,true);

FileReader inputFile = new FileReader(File);

BufferedReader bufferReader = new BufferedReader(inputFile);

String line = bufferReader.readLine();


for(int i = 0; line != null; i++){
if( header(i).equals(line)){
while( (line = bufferReader.readLine()) != null && ! Footer(i).equals( line ) )
{


stringToint.put(line, i);
}
}

}



StringTokenizer start=new StringTokenizer(keyword);

for(int i=-1; i<=start.countTokens();i++)
{
String temp=start.nextToken();
tempp.put(temp, i);
}

Set<String> fkeys = stringToint.keySet();
Iterator<String> fit = fkeys.iterator();


Set<String> Lkeys =tempp.keySet();
Iterator<String> sit = Lkeys.iterator();


for(int i=0 ; i<tempp.size() ; i++)
{
nextToken=sit.next();
while (fit.hasNext()){
String featurename = fit.next();

if(featurename.contains(nextToken))
{

//Do something
}

}

}

存在三个问题:一、第一个HashMap确实包含所有三个单词,但如果我使用控制台打印结果,它只会打印 HashMap 第一项的匹配项而不是全部三个(虽然这三个单词还有其他匹配项)。其次,正如代码中显而易见的那样,我从 i=-1 开始循环。那是因为如果我使用 i=0它不会将所有三个字符添加到 HashMap在这种情况下,字符串中单词的顺序将与 HashMap 中单词的顺序不同。最后,即使是 HashMap 第一个位置的项目,它甚至不返回 contains() 使用的所有匹配项。我手动检查了一下,发现有更多结果返回,但没有发生。

最佳答案

第三个问题是您没有在每个单词搜索时重置 fit 迭代器(在您的代码中,重置意味着初始化一个新迭代器)。实际上,您每次都需要在 for 循环中初始化它

for(int i=0 ; i<tempp.size() ; i++)
{
nextToken=sit.next();
fit = fkeys.iterator();
while (fit.hasNext()){
....

关于java - contains() 匹配两个字符串的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33460031/

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