所以我需要比较两个不同的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'错误。 感谢您提供任何帮助:)
答案 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);
}
}
您可以创建必须删除的项目的临时列表,或改善您的逻辑。