美文网首页Guava
guava实用功能之Multiset,Multimap与Bima

guava实用功能之Multiset,Multimap与Bima

作者: VikingOldYoung | 来源:发表于2016-11-05 18:54 被阅读158次

    Multiset

    无序+可重复
    利用Multiset重新解决之前的字符串出现次数的问题,可以很容易解决。
    利用这个功能可以完成很多有用的功能,如可以用来统计网站会员访问的次数。
    element();返回元素的容器
    count();返回重复的次数

    public static void main(String[] args) {
            String str = "this a cat and that is a mice where is the food";
            //分割字符串
            String[] strs = str.split(" ");
            //把字符串放进Multiset里面
            Multiset<String> set=HashMultiset.create();
            for(String temp:strs){
                set.add(temp);
            }
            //获取Multiset里的元素
            Set<String> eset=set.elementSet();
            for(String temp:eset){
                System.out.println(temp+"---------->"+set.count(temp));//count记录出现的次数
            }
        }
    

    Multimap

    Multimap是键可以重复的map
    这里的意思,内部实现就是当键重复时,他的值不会覆盖,而是存到对应于键的一个容器里。这样子我们可以用他来统计重复的具体内容。
    以下使用Multimap统计老师教授的课程

    public static void main(String[] args) {
            //统计每个老师教的课程
            Map<String, String> map=new HashMap<>();
            map.put("电力电子技术","王伟");
            map.put("单片机","王伟");
            map.put("微机", "刘一帆");
            map.put("局域网", "刘一帆");
            map.put("高数", "李小伟");
            map.put("现控", "沈浩");
            
            Multimap<String, String> teachers=ArrayListMultimap.create();
            //迭代之前的map,吧元素存进新的Multimap,但是用老师来当做键,这样子每个老师的课程就存在一起了
            Iterator<Map.Entry<String, String>> it=map.entrySet().iterator();
            while(it.hasNext()){
                Entry<String, String> entry=it.next();
                String key=entry.getKey();
                String value=entry.getValue();
                
                teachers.put(value,key);
            }
            //获的键
            Set<String> keys=teachers.keySet();
            for(String key:keys){
                Collection<String> col=teachers.get(key);
                System.out.println(key+"---->"+col);
            }
        }
    

    BiMap

    键跟值都不能重复的map
    因为键-值都不能重复,所以可以反转inverse();此时键值对调,就可以通过值来找键了

    public static void main(String[] args) {
            BiMap<String, String> map=HashBiMap.create();
            map.put("Viking", "viking@qq.com");
            map.put("good", "good@qq.com");
            //因为键-值都不能重复,所以可以反转inverse();反转,此时键值对调,就可以通过值来找键了
            String usr=map.inverse().get("viking@qq.com");
            System.out.println(usr);
        }
    

    相关文章

      网友评论

        本文标题:guava实用功能之Multiset,Multimap与Bima

        本文链接:https://www.haomeiwen.com/subject/ybxguttx.html