第五十九篇:commons-collections使用介绍之Map

本文介绍了Apache Commons Collections库中的一系列Map实现类,包括CaseInsensitiveMap、CompositeMap、DefaultedMap、FixedSizeMap、IdentityMap、LazyMap、LinkedMap、MultiKeyMap、MultiValueMap、PredicatedMap、ReferenceMap、ReferenceIdentityMap、TransformedMap和TypedMap、UnmodifiableMap。这些类提供了不同的特性和功能,如大小写不敏感、默认值、固定大小、键值身份比较、延迟初始化、保持插入顺序、多键映射、多值映射、条件校验、软引用管理、类型安全和只读保护等。
摘要由CSDN通过智能技术生成

介绍完了List,我怕们继续来看commons-collections中为我们提供的Map相关的实现类。

CaseInsensitiveMap

CaseInsensitiveMap是一个对键的大小写不敏感的Map,在将键添加或与其它键比较之前,会将其转换为小写字符串。

使用示例:

package com.gujin.collections;

import org.apache.commons.collections.map.CaseInsensitiveMap;
import org.junit.Test;

public class CaseInsensitiveMapTest
{
   
   @Test
   public void test()
   {
      CaseInsensitiveMap caseInsensitiveMap = new CaseInsensitiveMap();
      caseInsensitiveMap.put("name", "jianggujin");
      caseInsensitiveMap.put("NAME", "jianggujin");
      System.out.println(caseInsensitiveMap);
      System.out.println(caseInsensitiveMap.get("nAme"));
   }
}
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

运行结果:

{name=jianggujin} 
jianggujin

CompositeMap

CompositeMap修饰另一个Map。添加和移除操作使用可插拔的策略,如果没有提供策略,添加和删除是不支持的。

使用示例:

package com.gujin.collections;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.collections.map.CompositeMap;
import org.apache.commons.collections.map.CompositeMap.MapMutator;
import org.junit.Test;

public class CompositeMapTest
{
   
   @Test
   public void test()
   {
      CompositeMap compositeMap = new CompositeMap();
      compositeMap.addComposited(new HashMap<String, String>());
      MapMutator mapMutator1 = new MapMutator()
      {

         @Override
         public void resolveCollision(CompositeMap composite, Map existing,
               Map added, Collection intersect)
         {
         }

         @Override
         public void putAll(CompositeMap map, Map[] composited, Map mapToAdd)
         {
         }

         @Override
         public Object put(CompositeMap map, Map[] composited, Object key,
               Object value)
         {
            return composited[0].put(key, value);
         }
      };
      MapMutator mapMutator2 = new MapMutator()
      {

         @Override
         public void resolveCollision(CompositeMap composite, Map existing,
               Map added, Collection intersect)
         {
         }

         @Override
         public void putAll(CompositeMap map, Map[] composited, Map mapToAdd)
         {
         }

         @Override
         public Object put(CompositeMap map, Map[] composited, Object key,
               Object value)
         {
            return composited[0].put(key.toString().toUpperCase(), value);
         }
      };
      compositeMap.setMutator(mapMutator1);
      compositeMap.put("name", "jianggujin");
      compositeMap.setMutator(mapMutator2);
      compositeMap.put("name", "JIANGGUJIN");
      System.out.println(compositeMap.get("name"));
      System.out.println(compositeMap.get("NAME"));
   }
}
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值