Guava提供了一个新集合类型Multiset,它可以多次添加相等的元素,且和元素顺序无关。Multiset继承于JDK的Cllection接口,而不是Set接口。
Multiset主要方法介绍:
- add(E element) :向其中添加单个元素
- add(E element,int occurrences) : 向其中添加指定个数的元素
- count(Object element) : 返回给定参数元素的个数
- remove(E element) : 移除一个元素,其count值 会响应减少
- remove(E element,int occurrences): 移除相应个数的元素
- elementSet() : 将不同的元素放入一个Set中
- entrySet(): 类似与Map.entrySet 返回Set<Multiset.Entry>。包含的Entry支持使用getElement()和getCount()
- setCount(E element ,int count): 设定某一个元素的重复次数
- setCount(E element,int oldCount,int newCount): 将符合原有重复个数的元素修改为新的重复次数
- retainAll(Collection c) : 保留出现在给定集合参数的所有的元素
- removeAll(Collectionc) : 去除出现给给定集合参数的所有的元素
package com.parry.guava.GuavaTest; import java.util.ArrayList; import java.util.List; import com.google.common.collect.HashMultiset; import com.google.common.collect.Multiset; public class MultisetTest { public static void main(String[] args) { String str = "this is a cat and that is a mice"; String[] strArr = str.split(" "); List<String> words = new ArrayList<String>(); for (String stmp : strArr) { words.add(stmp); } Multiset<String> wordMultiset = HashMultiset.create(); wordMultiset.addAll(words); //将不同的元素放在一个集合set中 for (String key : wordMultiset.elementSet()) { //查看指定元素的个数 System.out.println(key + "-->" + wordMultiset.count(key)); } System.out.println("-----向集合中添加元素-----"); //向集合中添加元素 wordMultiset.add("that"); for (String key : wordMultiset.elementSet()) { System.out.println(key + "-->" + wordMultiset.count(key)); } System.out.println("-----向集合中添加若干个元素-----"); //向集合中添加若干个元素 wordMultiset.add("and", 10); for (String key : wordMultiset.elementSet()) { System.out.println(key + "-->" + wordMultiset.count(key)); } System.out.println("-----向集合中移出一个元素-----"); //向集合中移出一个元素 wordMultiset.remove("that"); for (String key : wordMultiset.elementSet()) { System.out.println(key + "-->" + wordMultiset.count(key)); } System.out.println("-----向集合中移出若干个元素-----"); //向集合中移出若干个元素,如果元素的个数小于要移除的个数,则会把该元素移除光 wordMultiset.remove("and",10); for (String key : wordMultiset.elementSet()) { System.out.println(key + "-->" + wordMultiset.count(key)); } System.out.println("-----向集合中移出一个元素-----"); //向集合中移出一个元素 wordMultiset.remove("is"); for (String key : wordMultiset.elementSet()) { System.out.println(key + "-->" + wordMultiset.count(key)); } System.out.println("-----设定某一个元素的重复次数-----"); //设定某一个元素的重复次数 wordMultiset.setCount("and", 10); for (String key : wordMultiset.elementSet()) { System.out.println(key + "-->" + wordMultiset.count(key)); } System.out.println("-----设置复合元素的个数设为新的重复次数-----"); //设置复合元素的个数设为新的重复次数(条件是参数等于原来的元素个数) wordMultiset.setCount("and", 1,0); for (String key : wordMultiset.elementSet()) { System.out.println(key + "-->" + wordMultiset.count(key)); } System.out.println("-----删除给定集合中的元素-----"); //删除给定集合中的元素 wordMultiset.removeAll(words); for (String key : wordMultiset.elementSet()) { System.out.println(key + "-->" + wordMultiset.count(key)); } } }