Java 在arraylist的arraylist中循环

Java 在arraylist的arraylist中循环,java,arraylist,collections,Java,Arraylist,Collections,下面的代码用于计算ArrayList中字符串的频率 public static int count (ArrayList<String> c, String str){ int num = 0; num = Collections.frequency(c, str); return num; } publicstaticint计数(arraylistc,stringstr){ int num=0;

下面的代码用于计算ArrayList中字符串的频率

public static int count (ArrayList<String> c, String str){

        int num = 0;

        num = Collections.frequency(c, str);        


        return num;


    }
publicstaticint计数(arraylistc,stringstr){
int num=0;
num=集合。频率(c,str);
返回num;
}

我现在要做的是改进这一点,以便该函数接受
ArrayList
,并可以循环遍历Arraylists集并计算字符串的出现次数。任何想法都很好

您需要使用两个嵌套for循环,第一个循环遍历每个列表,第二个循环遍历当前列表的每个元素,即:

int count = 0;
for (ArrayList<String> list : lists) {
    for (String string : list) { 
        if (list.equals("something")) count++;
    }
}
int count=0;
对于(ArrayList:列表){
对于(字符串:列表){
if(list.equals(“某物”))count++;
}
}

要计算频率,您还需要计算所有列表中的元素总数,但我将把它留给您,因为它现在应该很简单。

伙计,您描述了算法,它不会变得更简单。只需编写代码即可


请记住,
Collections::frequency
命名错误(IMHO),它应该是
count
在Java8中使用

public void findOccurenceInLists(ArrayList<ArrayList<String>> lists, String myStr) throws Exception {
    int occurence = 0;
    lists.stream().forEach((list) -> {
        occurence += list.stream().filter((str) -> str.equals(myStr)).count();
    });
    System.out.println(occurence + " occurence found");
}
public void findoccurencyinlists(ArrayList list,String myStr)引发异常{
int发生率=0;
lists.stream().forEach((列表)->{
事件+=list.stream().filter((str)->str.equals(myStr)).count();
});
System.out.println(发生+“发现发生”);
}

你的回答帮了我的忙,但你不必担心。for(ArrayList list:c){num=num+Collections.frequency(list,str);}在感谢之前,我从未使用过那种类型的for循环。这是一个很好的观点。我确实需要更多地研究Java8流,因为它们看起来非常强大。谢谢你的酷的新方法,不客气,流是强大的,非常优化和快速,只要尝试一下;)