• 【Java 学习笔记】 HashMultimap(guava)


    因为项目需要,又开始写Java代码。C++有一套固定的STL,而java的容器则灵活的多,最基本的应该是java.util.*下面的而一些容器,当然在其他的包里也有其他继承了该包为了各自需求实现的一些容器。

    HashMutliMap

    STL中有MultiMap,而java的util包中并没有这个容器。想自己写也没有这个时间,于是去网上搜了下。发现了在google的guava libary的包下有这个容器。

    google类库的下载地址:http://code.google.com/p/guava-libraries/wiki/Release09。

    import的路径是:com.google.common.collect.Multimap;

    在这个包中google实现了一系列的接口和容器,Multimap是一个定义的接口,继承接口生成了许多的各种容器,非常方便。

    继承Multimap有许多的Multimap变种。分别有:

    1.ArrayListMultimap:

    2.ForwardingMultimap:

    3.HashMultimap:

    4.ImmutableListMultimap:

    5.ImmutableMultimap:

    6.ImmutableSetMultimap:

    7.LinkedHashMultimap:

    8.LinkedListMultimap:

    9.TreeMultimap:

    这边使用HashMultimap做例子了解下使用过程

    --定义:

    HashMultimap<Integer,Integer> doc_numberic = HashMultimap.create();
    map.put(2, 4);
    map.put(1, 2);
    map.put(1, 3);
    map.put(2, 6);
    map.put(2, 4);
    map.put(11, 2);
    map.put(12, 3);
    map.put(21, 6);
    map.put(6, 7);

    --遍历:可以使用遍历器进行遍历,也可以获取其Key值进行遍历

        使用遍历器遍历:

    Iterator iter = map.entries().iterator();
    while(iter.hasNext())
    {
    Map.Entry
    <Integer, Integer> entry = (Map.Entry<Integer, Integer>)iter.next();
    System.out.println(String.format(
    "%d:%d", entry.getKey(),entry.getValue()));
    }

    结果:
    1:2
    1:3
    2:4
    2:6
    21:6
    6:7
    11:2
    12:3

        使用Key值遍历,key值可以得到一个全部键值的MultiSet或者是一个没有重复键值的KeySet,这边使用没有重复键值的做例子

    Set<Integer> keys = map.keySet();
    for(int key:keys)
    {
    String result = String.format("%d:", key);
    Set<Integer> values = map.get(key);
    for(int value:values)
    {
    result= result+" "+value;
    }
    System.out.println(result);
    }


    结果:
    1: 2 3
    2: 4 6
    21: 6
    6: 7
    11: 2
    12: 3
  • 相关阅读:
    地址标记,SpringMVC转发与调用相关知识存档
    SpringMVC+MyBatis项目分析与开发实例
    程序开发思路
    web.xml相关知识摘录整理
    Spring AOP
    Spring+Struts2/Hibernate 学习笔记
    Spring学习笔记 Part.01
    用java实现简单TCP服务器监听
    c语言希尔排序,并输出结果(不含插入排序)
    用java实现AVL树并打印结果
  • 原文地址:https://www.cnblogs.com/xiaoka/p/2139805.html
Copyright © 2020-2023  润新知