Guava 库中的 Multiset
是一个允许元素重复的集合。它继承自 Collection
接口,提供了额外的方法来处理元素的计数。以下是一些使用 Guava Multiset
的基本代码示例:
引入 Guava 库
首先,确保你的项目中已经添加了 Guava 库的依赖。如果你使用 Maven,可以在 pom.xml
文件中添加以下依赖:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version> <!-- 请使用最新的版本号 -->
</dependency>
创建和添加元素
import com.google.common.collect.Multiset;
import com.google.common.collect.HashMultiset;
public class MultisetExample {
public static void main(String[] args) {
// 创建一个Multiset
Multiset<String> multiset = HashMultiset.create();
// 添加元素
multiset.add("apple");
multiset.add("banana");
multiset.add("apple"); // 允许重复
// 打印Multiset
System.out.println(multiset); // 输出:[apple x2, banana x1]
}
}
元素计数和查询
// 查询元素计数
System.out.println(multiset.count("apple")); // 输出:2
System.out.println(multiset.count("banana")); // 输出:1
// 检查Multiset是否包含某个元素
System.out.println(multiset.contains("apple")); // 输出:true
System.out.println(multiset.contains("cherry")); // 输出:false
删除元素
// 删除一个元素
multiset.remove("apple");
System.out.println(multiset); // 输出:[apple x1, banana x1]
// 删除一个元素的特定数量
multiset.remove("apple", 2); // 尝试删除两个"apple",但只剩下一个,所以只删除一个
System.out.println(multiset); // 输出:[banana x1]
// 完全移除一个元素
multiset.removeAll("banana");
System.out.println(multiset); // 输出:[]
元素迭代
// 重新添加元素以进行迭代演示
multiset.add("apple");
multiset.add("banana");
// 迭代Multiset
for (String fruit : multiset) {
System.out.println(fruit + " appears " + multiset.count(fruit) + " times");
}
// 输出:
// apple appears 1 times
// banana appears 1 times
这些示例展示了如何创建 Multiset
,添加和删除元素,查询元素计数,以及迭代 Multiset
中的元素。Guava 提供了多种 Multiset
实现,例如 HashMultiset
、TreeMultiset
和 LinkedHashMultiset
,你可以根据需要选择适合的实现。