Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中计算ArrayList中匹配的元素_Java_Collections_Arraylist - Fatal编程技术网

如何在Java中计算ArrayList中匹配的元素

如何在Java中计算ArrayList中匹配的元素,java,collections,arraylist,Java,Collections,Arraylist,我对如何在java中计算ArrayList中匹配的元素有疑问。。 我的数组列表包含[运动,运动,球,球员,运动] 我需要像这样输出: word sport frequency 3 word ball frequency 1 word player frequency 1 如果您愿意引入外部依赖项,请感谢advance:Google Guava库包含各种实现,这是您想要的东西的名称。如果你不愿意依赖一个库来实现这一点,你至少可以看看源代码。Multiset基本上是某种类型到整数的映射,该整数保

我对如何在java中计算ArrayList中匹配的元素有疑问。。 我的数组列表包含[运动,运动,球,球员,运动]

我需要像这样输出:

word sport frequency 3
word ball  frequency 1
word player frequency 1

如果您愿意引入外部依赖项,请感谢advance

:Google Guava库包含各种实现,这是您想要的东西的名称。如果你不愿意依赖一个库来实现这一点,你至少可以看看源代码。Multiset基本上是某种类型到整数的映射,该整数保存集合中特定项的计数


当然,我假设您实际上能够用Multiset替换您的ArrayList。

如果您愿意引入外部依赖项:Google Guava库包含各种实现,这是您想要的东西的名称。如果你不愿意依赖一个库来实现这一点,你至少可以看看源代码。Multiset基本上是某种类型到整数的映射,该整数保存集合中特定项的计数


当然,我假设您实际上能够用Multiset替换ArrayList。

将内容复制到另一个数据结构中:

Map<String, Integer>
Map

键(
字符串
)是单词,
整数
值存储计数。

将内容复制到另一个数据结构中:

Map<String, Integer>
Map
键(
字符串
)是单词,
整数
值存储计数。

使用映射:

Map<String, Integer> occurrencies = new HashMap<String, Integer>();
for (String word : list) {
    occurrencies.put(word, occurrencies.containsKey(word)
    ? occurrencies.get(word) + 1 : 1);
}
for (Entry<String, Integer> entry : occurrencies.entrySet()) {
    System.out.println("Word: "+entry.getKey()
                     + ", occurences: "+entry.getValue());
}
Map-occurrences=newhashmap();
for(字符串字:列表){
发生率.put(单词,发生率.containsKey(单词)
?发生率。获取(单词)+1:1;
}
for(条目:accurrencies.entrySet()){
System.out.println(“Word:+entry.getKey()
+,出现次数:“+entry.getValue());
}
如果希望单词按字母顺序排序,请使用
TreeMap
而不是
HashMap

(当然,正如其他人所建议的那样,使用番石榴会容易得多)

使用地图:

Map<String, Integer> occurrencies = new HashMap<String, Integer>();
for (String word : list) {
    occurrencies.put(word, occurrencies.containsKey(word)
    ? occurrencies.get(word) + 1 : 1);
}
for (Entry<String, Integer> entry : occurrencies.entrySet()) {
    System.out.println("Word: "+entry.getKey()
                     + ", occurences: "+entry.getValue());
}
Map-occurrences=newhashmap();
for(字符串字:列表){
发生率.put(单词,发生率.containsKey(单词)
?发生率。获取(单词)+1:1;
}
for(条目:accurrencies.entrySet()){
System.out.println(“Word:+entry.getKey()
+,出现次数:“+entry.getValue());
}
如果希望单词按字母顺序排序,请使用
TreeMap
而不是
HashMap


(当然,正如其他人所建议的那样,使用番石榴会容易得多)

您还可以对列表进行排序,然后计算单词重复的次数


增加了输出中字母顺序的额外功能

您还可以对列表进行排序,然后计算单词重复的次数


增加了输出中字母顺序的额外功能

想象一下,您一次只能在该arraylist中看到一项。想象一下。您将如何解决此问题?假设您一次只能在该arraylist中看到一项。想象一下。您将如何解决这个问题?+1用于Guava Multiset,尽管我怀疑OP是否准备好使用像Guava Yet一样复杂的库,为什么在Java具有
映射时使用外部库?@MarcoS:一般来说(在实际应用中使用)
Multiset
有一个比
Map
API更适合这种情况的API。然而,我同意OP可能不需要它来完成他们示例中的简单任务(特别是当它是家庭作业时)。@Sean:是的,我认为你是对的。使用您的解决方案,OP可能会更好。+1对于Guava Multiset,尽管我怀疑OP是否准备好使用像Guava Yet这样复杂的库,为什么在Java有
映射时使用外部库?@MarcoS:一般来说(在实际应用中使用)
Multiset
有一个比
Map
API更适合这种情况的API。然而,我同意OP可能不需要它来完成他们示例中的简单任务(特别是当它是家庭作业时)。@Sean:是的,我认为你是对的。使用您的解决方案,OP可能会更好。