public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
String s = "nope";
String v = "nopenopes";
list.add(s);
list.add(v);
keywordCount(list, "nope");
}
public static int keywordCount(ArrayList<String> str , String keyword){
int count = 0;
for (int i = 0;i<str.size();i++){
while ((i= str.indexOf(keyword,i)) != -1) { // here is where I found the error
count++;
i += keyword.length();
}}
System.out.println(count);
return count;
}
你好,我正在编写一段代码来计算数组列表中特定关键字的出现次数。它适用于一行字符串,但在尝试为一个arraylist做同样的事情时却没有。有人可以指出我做错了什么,并帮我解决它。提前致谢。
答案 0 :(得分:4)
List<String> list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("a");
System.out.println(Collections.frequency(list,"a")); // out put is 2
我们假设你有List<String> list
,那么你想要找到出现次数keyword
然后
int numOfOccurrences= Collections.frequency(list,keyword)
答案 1 :(得分:2)
您可以轻松使用contains()
方法;
public static int keywordCount(ArrayList<String> str , String keyword){
int count = 0;
for (int i = 0; i<str.size();i++){
if(str.get(i).contains(keyword))
count++;
}
}
答案 2 :(得分:0)
您可以使用Arrays.asList()
构建List
。
public static void main(String[] args) {
System.out.println(keywordCount(Arrays.asList("nope", "nopenopes"), "nope"));
}
public static int keywordCount(List<String> al, String keyword) {
int count = 0;
for (String str : al) {
int i = 0;
while ((i = str.indexOf(keyword, i)) != -1) {
count++;
i += keyword.length();
}
}
return count;
}
当我运行以上内容时,我得到了输出
3
代码中的一个问题是
i = str.indexOf(keyword,i)
在您的帖子中str
不是String
,而是ArrayList
。
答案 3 :(得分:0)
使用下面的代码。
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("a");
// get all Unique keywords
Set<String> set = new HashSet<String>(list);
for(String keyword: set){
System.out.println(keyword + ": " + Collections.frequency(list, keyword));
}
}
输出:
b: 1
a: 2