Java 在arraylist的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;
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流,因为它们看起来非常强大。谢谢你的酷的新方法,不客气,流是强大的,非常优化和快速,只要尝试一下;)