尝试比较两个不同ArrayLists的每个元素

时间:2014-02-22 16:45:29

标签: java arraylist compare

所以我需要比较两个不同的ArrayLists元素。如果来自第一个ArrayList(tweets)的元素与第二个(hashTags)中的任何元素不匹配,我想将元素(从推文)添加到第二个ArrayList(hashTags)

到目前为止,这是我的代码:

package edu.bsu.cs121.albeaver;

import java.util.*;

public class HashTagCounter {
    public static void main(String args[]) {
        System.out
                .println("Please tweet your tweets,and type 'done' when  you are done.");
        Scanner twitterInput = new Scanner(System.in);

        ArrayList<String> tweets = new ArrayList<String>();
        ArrayList<String> hashTags = new ArrayList<String>();

        while (true) {
            String tweet = twitterInput.next();
            tweets.add(tweet);
            if ("done".equals(tweet))
                break;
        }

        System.out.println(tweets);
        twitterInput.close();
        int count = 0;

        for (String tweet : tweets) {
            if (tweet.contains("#") && count == 0) {
                hashTags.add(tweet);
                hashTags.add(1, "");
                count++;
            } else if (tweet.contains("#")) {
                for (String hashTagged : hashTags) {
                    if (tweet.equalsIgnoreCase(hashTagged) != true) {
                        hashTags.add(hashTagged);
                    }
                }
            }
        }

        System.out.println(hashTags);
        System.out.println("Number of unique '#' used is: "
                + (hashTags.size() - 1));

    }
}

(编辑)我似乎得到了'java.util.ConcurrentModificationException'错误。 感谢您提供任何帮助:)

2 个答案:

答案 0 :(得分:2)

    for (String hashTagged : hashTags) {
                        if (tweet.equalsIgnoreCase(hashTagged) != true) {
                            hashTags.add(hashTagged);
  -----------------------------^
                        }
                    }

问题是在迭代hashTags列表时你无法更新它。

答案 1 :(得分:1)

您正在获取java.util.ConcurrentModificationException,因为您在迭代时正在修改List hashTags

for (String hashTagged : hashTags) {
    if (tweet.equalsIgnoreCase(hashTagged) != true) {
        hashTags.add(hashTagged);
    }
}

您可以创建必须删除的项目的临时列表,或改善您的逻辑。