commons-collections集合类型-MultiMap

在日常的开发工作中,我们有的时候需要构造像Map<K, List<V>>或者Map<K, Set<V>>这样比较复杂的集合类型的数据结构,如果是自己写,需要额外大量的代码,此时,就可以使用到commons-collections里面的MultiMap

代码如下

首先加入依赖:

<dependency>
	<groupId>commons-collections</groupId>
	<artifactId>commons-collections</artifactId>
	<version>3.2.2</version>
</dependency>

package org.osc.hazelcast.coll;

import java.util.HashMap;
import java.util.HashSet;

import org.apache.commons.collections.MultiMap;
import org.apache.commons.collections.map.MultiValueMap;

public class MultiMapTest 
{
	static void list()
	{
		/**
		 * 默认是取出来的是list
		 */
		MultiMap mm = new MultiValueMap();
		mm.put("唐朝", new User("1", "李渊"));
		mm.put("唐朝", new User("2", "李世民"));
		mm.put("唐朝", new User("3", "李治"));
		mm.put("唐朝", new User("4", "李显"));
		mm.put("唐朝", new User("4", "李旦"));
		
		mm.put("宋朝", new User("5", "赵匡胤"));
		mm.put("宋朝", new User("6", "赵光义"));
		
		System.out.println(mm.get("唐朝"));
		System.out.println(mm.get("唐朝").getClass());
	}
	
	static void set()
	{
		/**
		 * 如果取出来的是set , 需要调用decorate方法
		 */
		MultiMap mm = MultiValueMap.decorate(new HashMap<String, User>(), HashSet.class);
		mm.put("唐朝", new User("1", "李渊"));
		mm.put("唐朝", new User("2", "李世民"));
		mm.put("唐朝", new User("3", "李治"));
		mm.put("唐朝", new User("4", "李显"));
		mm.put("唐朝", new User("4", "李旦"));
		
		mm.put("宋朝", new User("5", "赵匡胤"));
		mm.put("宋朝", new User("6", "赵光义"));
		
		System.out.println(mm.get("唐朝"));
		System.out.println(mm.get("唐朝").getClass());
	}
	
	public static void main(String[] args)
	{
		list();
		System.out.println("-----------------");
		set();
	}

}
class User
{
	private String id;
	private String name;
	public int hashCode() {
		return id.hashCode();
	}
	public boolean equals(Object obj)
	{
		User user = (User)obj;
		return this.id.equals(user.id);
	}
	public User(String id, String name)
	{
		this.id = id;
		this.name = name;
	}
	public String toString()
	{
		return "User [id=" + id + ", name=" + name + "]";
	}
}

运行,输出如下:

[User [id=1, name=李渊], User [id=2, name=李世民], User [id=3, name=李治], User [id=4, name=李显], User [id=4, name=李旦]]
class java.util.ArrayList
-----------------
[User [id=1, name=李渊], User [id=2, name=李世民], User [id=3, name=李治], User [id=4, name=李显]]
class java.util.HashSet

### 回答1: commons-collections-3.2.2.jar是一个Java类库,它提供了许多用于处理集合对象的工具和数据结构。这个jar文件是Apache Commons项目的一部分,旨在提供一个通用而强大的集合工具包,以帮助开发者更轻松地处理集合数据。 commons-collections-3.2.2.jar中包含了许多常用的集合类,如List、Set、Map等,同时还提供了一些特殊的集合类,如袋子(Bag)、多键Map(MultiMap)等。这些集合类实现了许多常见的集合操作,如排序、过滤、转换等,使得开发者能够更方便地处理集合数据。 除了集合类外,commons-collections-3.2.2.jar还提供了一些其他的实用工具类,如迭代器(Iterator)、比较器(Comparator)等,帮助开发者更高效地操作集合对象。 commons-collections-3.2.2.jar的使用非常简单,只需将该jar文件添加到项目的classpath中即可。开发者可以通过导入相应的包名,使用其中的类和方法来操作集合对象。 总之,commons-collections-3.2.2.jar是一个功能丰富的Java类库,可以帮助开发者更轻松地处理集合对象。无论是对于初学者还是有经验的开发者来说,这个库都提供了许多便捷的方法和工具,使得集合操作更加简单高效。 ### 回答2: commons-collections-3.2.2.jar是一个Java类库,提供了一组有用的集合类和工具类,使得在开发过程中更方便地操作和处理集合对象。 commons-collections-3.2.2.jar包含了一些常用的集合类,例如List、Set、Map等,它们都实现了Java集合框架的接口,并提供了一些常用的操作方法,如添加、删除、查找等。这些集合类具有扩展性,可以根据需要自定义实现,也可以通过合适的适配器类将其转换为其他类的集合。 除了基础的集合类之外,commons-collections-3.2.2.jar还提供了一些特殊用途的集合类和工具类。例如,有一个可以解决数组操作问题的类ArrayUtils,它提供了各种对数组进行操作的方法,如合并、比较、填充等。还有一个针对集合元素处理的工具类CollectionUtils,它提供了各种便利的方法,如过滤、转换、排序等。 commons-collections-3.2.2.jar对于Java开发者来说非常有用,可以帮助简化代码、提高开发效率。它提供了丰富的集合操作方法,可以快速完成一些常见的集合处理任务。通过使用这个库,开发者可以更加专注于业务逻辑的实现,而无需关心底层的集合操作细节。 总之,commons-collections-3.2.2.jar是一个功能强大的Java类库,提供了丰富的集合类和工具类,可以帮助开发者更轻松地操作和处理集合对象,提高开发效率。 ### 回答3: commons-collections-3.2.2.jar是一个Java库,用于提供一组常见的数据结构和算法。它是Apache Commons项目的一部分,由Apache Software Foundation提供和维护。 该库包含了许多功能强大且易于使用的集合类,如列表、队列、堆栈和映射等。这些集合类提供了许多有用的方法和工具,可以简化开发人员对集合数据的操作和管理。 此外,commons-collections-3.2.2.jar还提供了一些算法和工具类,如排序、查找、迭代和转换等。它们可以在处理集合数据时提供更高效和灵活的选择。 commons-collections-3.2.2.jar还具有高度可扩展性和灵活性。开发人员可以通过继承已有的集合类或实现相关接口来定制和扩展其功能。它还支持泛和迭代器等先进的Java特性,使开发人员能够更好地利用现代Java开发的功能和优势。 总的来说,commons-collections-3.2.2.jar是一个强大而可靠的Java库,为开发人员提供了许多常用的数据结构和算法。它在提高开发效率和代码质量方面发挥了重要作用,并广泛应用于各种Java应用程序的开发中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值