将值添加到类型的ArrayList元素

时间:2013-06-14 13:02:22

标签: java arraylist

这就是我所拥有的。我正在尝试将名称值添加到indexStruct类型的ArrayList中,并且不知道如何执行此操作。 Name是一个String,任何帮助都会很棒。谢谢!

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);
    }
}

2 个答案:

答案 0 :(得分:2)

  

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

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

  1. indexStruct类的对象。
  2. 扩展indexStruct的类的对象。
  3. 实现名为indexStruct的接口的类的对象。
  4. 唯一可以插入字符串的方法是,如果indexStruct对象中有字符串字段。

    您将创建此类对象,并指定名称。然后将此对象添加到arraylist。

      

    currentIndex.add(placeHolder, Word);

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

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

    ,这应该有效
    currentIndex.add(placeHolder, currentIndex.get(placeHolder));
    

    您基本上会在indexStruct位置输入同一placeHolder个对象的另一个实例。

    另外,我建议你研究一下iterators或增强型for loops,它们针对迭代ArrayLists进行了优化。

    请参阅:

答案 1 :(得分:0)

您正在使用

  1. ArrayList:Array List,可以存储Indexstruct的对象。
  2. 你正在尝试存储indexstruct.word(我猜可能是一个字符串)。
  3. 由于Indexstruct.word类型与ArrayList不兼容,您遇到问题。

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