我创建了一个数组列表并随机插入了一些元素.我试图找到每个元素出现的频率.我尝试了两种方法并且都工作正常.第一种方法是使用JAVA中提供的直接方法,即,
Collection.frequency(collection,"element");
Run Code Online (Sandbox Code Playgroud)
第二种方法是将ArrayList元素放入HashMap并查找频率
List<String> elements = new ArrayList<String>();
elements.add("A");
elements.add("B");
elements.add("C");
elements.add("A");
Map<String,Integer> count = new HashMap<String,Integer>();
for(String s : elements)
{
if(count.containsKey(s))
{
count.put(s,count.get(s)+1);
}
else
{
count.put(s, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
这两种方法都运行正常.但我想知道哪种方法更好.
这取决于您需要获取频率信息的频率 - 如果它是一个关闭Collections::frequency方法就好了,否则地图将更有效.另请注意,使用Java 8,您可以使用以下命令保存几行代码:
Map<String, Long> count = elements.stream().collect(groupingBy(e -> e, counting()));
Run Code Online (Sandbox Code Playgroud)
假定以下导入:
import static java.util.stream.Collectors.counting;
import static java.util.stream.Collectors.groupingBy;
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |