0

这就是我所拥有的。我正在尝试向 indexStruct 类型的 ArrayList 添加一个名称值,但不知道该怎么做。名称是一个字符串,任何帮助都会很棒。谢谢!

import java.util.ArrayList;
public class Currentindex {


    public void indexedWords(String currentWord, ArrayList <Indexstruct> currentIndex){     
    int convoMax=currentIndex.size();
    int convoMin=0;
    int placeHolder;
    int strComp;
    //pull words to skip that appear frequently in a typical conversation


    while(convoMax>convoMin){           //binary search 
        placeHolder=(convoMin+convoMax)/2;
        strComp=currentWord.compareToIgnoreCase(currentIndex.get(placeHolder).Word);
        if(strComp==0){
        currentIndex.add(placeHolder, Word);  //<--Where problem occurs     
            break;
        }       
        else if(strComp<0){ 
        convoMax=placeHolder-1;     
        }   
        else{
        convoMin=placeHolder+1;
        }
    }
        //addterm(currentIndex);
        System.out.println(currentIndex);
    }
}
4

2 回答 2

2

我正在尝试向 indexStruct 类型的 ArrayList 添加名称值。

特定的 ArrayList 只能添加类型为 的元素indexStruct。这意味着,它们要么是:

  1. indexStruct 类的对象。
  2. 扩展 indexStruct 的类的对象。
  3. 实现称为 indexStruct 的接口的类的对象。

插入字符串的唯一方法是 indexStruct 对象中是否有字符串字段。

您将创建这样一个对象,并指定名称。然后将此对象添加到数组列表中。

currentIndex.add(placeHolder, Word);

call 的问题currentIndex.add(placeHolder, Word); //<--Where problem occurs是该Word变量不存在。

我假设您将 currentWord 与 placeHolder 处的特定元素进行比较,然后希望在它们相等时再次重新插入相同的 Word(忽略大小写)。如果您将线路更改为:

currentIndex.add(placeHolder, currentIndex.get(placeHolder));

您实际上将在位置输入同一indexStruct对象的另一个实例placeHolder

另外,我建议您查看iterators或增强for loops哪些针对迭代进行了优化ArrayLists

看:

于 2013-06-14T13:10:18.460 回答
0

您正在使用

  1. ArrayList:ArrayList,可以存储Indexstruct的对象。
  2. 你正在尝试存储 indexstruct.word (我猜可能是一个字符串)。

由于 Indexstruct.word 的类型与 ArrayList 不兼容,您会遇到问题。

试试这个 Add currentIndex.add(placeHolder, new Indexstruct(word)); 或者将 word 设置为新构造的 Indexstruct 对象,然后添加该对象。

于 2013-06-14T13:12:00.790 回答