在java中使用int排序ArrayList <String>

use*_*324 3 java string integer

我想用java出现ArrayList<String>的次数在java中排名.像这样:如果我有

ArrayList<String>= [French, English, German, French, French, Belgium, English, Belgium]

我计算"French", "English", "Belgium",etc.出现的数字.法语出现3次,英语2次,比利时2次,德语1次.然后我想对ArrayList<String>数字的函数进行排名.

结果将是:

French 3
English 2 
Belgium 2
German 1
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?如何关联整数和字符串?

VH-*_*NZZ 6

不要重新发明轮子并使用类的frequency方法Collections:

public static int frequency(Collection<?> c, Object o)
Run Code Online (Sandbox Code Playgroud)

返回指定集合中等于指定对象的元素数.更正式地,返回集合中元素e的数量,使得(o == null?e == null:o.equals(e)).

如果你需要计算所有元素的出现次数,请巧妙地使用Map和循环:)或者使用frequency上面的方法将列表放在Set中,并在集合的每个元素上循环.HTH

编辑/ Java 8:如果你想要一个功能更强大的Java 8单线程解决方案与lambdas,请尝试:

Map<String, Long> occurrences = 
  list.stream().collect(Collectors.groupingBy(w -> w, Collectors.counting()));
Run Code Online (Sandbox Code Playgroud)

然后按值对地图进行排序.