java Multimap

实现

{
    "a": [
        1,
        2,
        3
    ],
    "b": [
        3,
        7
    ]
}

当然, HashMap<String, List<Integer>> 是可以的,但是不方便。这里使用Multimap

举例

package com.example.ch6_2;
import java.util.Collections;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;

public class testMultimap {
    public static void main(String[] argv) {
        Multimap<String, String> myMultiMap = ArrayListMultimap.create();
        myMultiMap.put("Fruits", "Apple");
        myMultiMap.put("Fruits", "Pear");
        myMultiMap.put("Fruits", "Banana");
        myMultiMap.put("Vegetables", "eggplant");

        System.out.println("\nmyMultiMap size:" + myMultiMap.size());

        System.out.println("\nmyMultiMap.get(Fruits): " + myMultiMap.get("Fruits"));
        System.out.println("\nmyMultiMap.get(Vegetables): " + myMultiMap.get("Vegetables"));

        System.out.println("\nkeys:");
        for (String key : myMultiMap.keys()) {
            System.out.println(key);
        }

        System.out.println("\nvalues:");
        for (String value : myMultiMap.values()) {
            System.out.println(value);
        }

        myMultiMap.remove("Fruits", "Apple");
        System.out.println("\nmyMultiMap size:" + myMultiMap.size());

        myMultiMap.removeAll("Fruits");
        System.out.println("\nmyMultiMap size:" + myMultiMap.size());
    }
}

结果

myMultiMap size:4

myMultiMap.get(Fruits): [Apple, Pear, Banana]

myMultiMap.get(Vegetables): [eggplant]

keys:
Vegetables
Fruits
Fruits
Fruits

values:
eggplant
Apple
Pear
Banana

myMultiMap size:3

myMultiMap size:1

  

时间: 2024-10-13 03:07:18

java Multimap的相关文章

MultiMap、BidiMap及LazyMap的使用

一.MultiMap 在日常的开发工作中,我们有的时候需要构造像Map<K, List<V>>或者Map<K, Set<V>>这样比较复杂的集合类型的数据结构,以便做相应的业务逻辑处理. 但是像Map<String, List<StudentScore>> StudentScoreMap = new HashMap<String, List<StudentScore>>()这样的数据结构,自己实现起来太麻烦,你

BidiMap MultiMap LazyMap

所谓BidiMap,直译就是双向Map,可以通过key找到value,也可以通过value找到key,这在我们日常的代码-名称匹配的时候很方便:因为我们除了需要通过代码找到名称之外,往往也需要处理用户输入的名称,然后获取其代码.需要注意的是BidiMap当中不光key不能重复,value也不可以. 所谓MultiMap,就是说一个key不在是简单的指向一个对象,而是一组对象,add()和remove()的时候跟普通的Map无异,只是在get()时返回一个Collection,利用MultiMap

一篇关于apache commons类库的详解

原文 http://blog.csdn.net/wiker_yong/article/details/23551209 1.1. 开篇 在Java的世界,有很多(成千上万)开源的框架,有成功的,也有不那么成功的,有声名显赫的,也有默默无闻的.在我看来,成功而默默无闻的那些框架值得我们格外的尊敬和关注,Jakarta Commons就是这样的一个框架.如果你至少参与了一个中型规模的Java项目,那么我想有超过一大半的机会你都接触和使用到了Jakarta Commons,不管你自己有没有察觉.就我所

apache commons类库的学习

原文地址http://www.tuicool.com/articles/iyEbquE 1.1. 开篇 在Java的世界,有很多(成千上万)开源的框架,有成功的,也有不那么成功的,有声名显赫的,也有默默无闻的.在我看来,成功而默默无闻的那些框架值得我们格外的尊敬和关注,Jakarta Commons就是这样的一个框架.如果你至少参与了一个中型规模的Java项目,那么我想有超过一大半的机会你都接触和使用到了Jakarta Commons,不管你自己有没有察觉.就我所知,除了Apache Jakar

Commons-Collections简介

如果你不熟悉Jakarta Commons话,那么很有可能你已经重新发明了好几个轮子.在你编写更多的普通的框架或工具之前,体验一下Commons吧.它将会大大地节约你的时间.太多的人自己写一个,其实是与Commons Lang中的StringUtils重复的StringUtils类,或者,开发者不知道从Commons Collections中重新创建工具,哪怕commons-collections.jar已经在classpath中可用了. 真的,请停一下.看看Commons Collection

Guava:好用的java类库 学习小记

基础功能 google guava中定义的String操作 在google guava中为字符串操作提供了很大的便利,有老牌的判断字符串是否为空字符串或者为null,用指定字符填充字符串,以及拆分合并字符串,字符串匹配的判断等等. 1. 使用com.google.common.base.Strings类的isNullOrEmpty(input)方法判断字符串是否为空 1 //Strings.isNullOrEmpty(input) demo 2 String input = ""; 3

java review几处小问题集锦

1 线程池使用不当 我们的调度系统需要将一堆会员分配给相应的人员来处理,流程如以下伪代码所示: public void dispatch() { while (true) { List<Member> memberList = getUnassignedMemberList(); //获取所有未分配的会员 for(Member each : memberList) { singleDispatch(each); //为每一个会员分配相应的人员处理 } try { Thread.sleep(10

Java集合类汇总记录--guava篇

BiMap HashBiMap<K,V> 实现了两份哈希表数据结构(本类独立实现),分别负责两个方向的映射. EnumBiMap<K,V> 两个EnumMap对象分别负责两个方向的映射. EnumHashBiMap<K,V> 一个EnumMap对象负责K到V映射,一个HashMap对象负责V到K的影身. MultiMap HashMultimap<K,V> 使用HashMap<K,HashSet<V>>对象实现. TreeMultim

java 中文转拼音之pinyin4j

一.简单介绍 有时候,需要将汉字编程对应的拼音,以方便数据的处理.比如在Android手机应用的开发上,要查询联系人的姓名,通常都是用拼音进行查询的. 比如要查询"曹孟德",就可以输入"cmd",即"曹孟德"三个汉字的拼音"caomengde"各字的首字母.但是怎样才能将"曹孟德"翻译成"caomengde"呢? 很简单的办法就是建立一个大的对照表(比如用关联容器Map),比如<&