在文件中查找一个单词,将其存储在数组列表中,并确保该单词不会被多次占用?

时间:2017-02-13 04:30:37

标签: java

public ArrayList<String> getWords()
{
    int size1 = lines.size();
    int size2 = 0;
    int counter3 = 0;
    ArrayList<Integer> checkthewords;
    for (int x = 0; x < size1; x++)
    {
        size2 = lines.get(x).substring(x).length();
        for (int y = 0; y < size2; y++)
        {
            if (Character.isLetter(charAt(((lines.get(x)).indexOf(x, z + x)))))
            {
                words.set(z, lines.get(x).substring(x,z + 1));
            }
            else
            {
                checkthewords.set(counter3, words);
                counter3++;
            }
            if (checkthewords.get(x).equals(checkthewords.get(counter3)))
            {

            }
        }
    }
    return words;
}

上面的方法叫做getWords()。我试图从文件中获取一个单词并将其存储在arrayList中检查单词。我想确保一个单词不会存储在arrayList中多次检查单词。

我有if语句:

            if (Character.isLetter(charAt(((lines.get(x)).indexOf(x, z + x)))))

但是,不知道从哪里去。

2 个答案:

答案 0 :(得分:0)

如果不允许重复,您应该使用Java中的Set来存储元素。

  

不包含重复元素的集合。

如果您想保留广告订单,请使用LinkedHashSet 这是Set界面的哈希表和链接列表实现,具有可预测的迭代顺序。

请参阅以下教程以了解Set在java中的应用。
Tutorial 1
Tutorial 2
Tutorial 3

参见 - :
HashSet vs TreeSet vs LinkedHashSet
HashSet vs LinkedHashSet

答案 1 :(得分:0)

我很确定你的代码目前还不会运行。你在那里做了一些奇怪的事情,我真的不明白。

尝试一次接近这一步。

第一步是从文件中获取单词。确保您可以解析checkthewords并提取所需的单词。

然后,您需要检查contains列表中是否存在该词。如果它不存在,请添加它。您可以使用List提供的if(!checkthewords.contains(word)) { // it's not in the list yet, add it checkthewords.add(word); } 方法查看列表是否包含某些内容。

checkthewords

另外,当您创建ArrayList<String> checkthewords; 列表时,不要对其进行初始化(因此它为空):

ArrayList<String> checkthewords = new ArrayList<String>();

应该是:

checkthewords.set()

你不应该那样使用setArrayIndexOutOfBoundsException用于替换现有元素,而不是添加新元素。您可以轻松设置一个尚不存在的元素并抛出checkthewords.add(word)。使用set(int index, E element)在列表中添加内容。

请参阅ArrayList documentation

  

<ChildComponent btnClick={this._getGps.bind(this, navigator)} navigator={navigator} />

     

使用指定的元素替换此列表中指定位置的元素。

看起来你正在过度思考这个问题。把事情简单化。 :)