计算数组列表中关键字的出现次数

时间:2014-08-07 06:58:12

标签: java arraylist

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做同样的事情时却没有。有人可以指出我做错了什么,并帮我解决它。提前致谢。

4 个答案:

答案 0 :(得分:4)

你可以起诉Collections.frequncy()

 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