zoukankan      html  css  js  c++  java
  • 【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
  • 相关阅读:
    假期实践
    每周更新学习进度表
    作业三
    作业一
    作业二
    真实感海洋的绘制(一):基于统计学模型的水面模拟方法
    递推方程的求解
    真实感海洋的绘制(二):使用快速傅里叶变换加速波形计算
    "Mathematical Analysis of Algorithms" 阅读心得
    HTML2
  • 原文地址:https://www.cnblogs.com/xiaoka/p/2139805.html
Copyright © 2011-2022 走看看