- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
是否可以提供创建 Multimap<String, String>
的示例?使用 Spring ?
我很好奇如何在应用程序上下文 XML 文件中完成它。
最佳答案
Google Collections已弃用 Guava ,所以我会回答有关 Guava 的问题。
我将使用这个 Bean 类:
public class Bean{
private Multimap<String, String> map;
public void setMap(Multimap<String, String> map){
this.map = map;
}
}
唯一可以轻松连接(仅使用 XML)的 Guava Multimap 工厂方法是 Multimaps.forMap(existingMap)
方法。这是 XML:
<bean class="foo.bar.Bean">
<property name="map">
<bean class="com.google.common.collect.Multimaps"
factory-method="forMap">
<constructor-arg>
<bean class="java.util.HashMap" />
</constructor-arg>
</bean>
</property>
</bean>
如果你想要一个更复杂的Supplier
Multimaps
中基于方法的方法类,您必须将供应商创建为 Java 类。如果您只想要一个原始实例化 Supplier
,您可以将其创建为 Spring FactoryBean
:
public class SupplierFactoryBean<T> extends AbstractFactoryBean<Supplier<T>>{
private final Class<T> type;
private final Supplier<T> supplier;
public SupplierFactoryBean(final Class<T> type){
this.type = type;
this.supplier = new Supplier<T>(){
@Override
public T get(){
try{
return type.newInstance();
} catch(final Exception e){
throw new IllegalStateException(e);
}
}
};
}
@Override
public Class<?> getObjectType(){ return type; }
@Override
protected Supplier<T> createInstance() throws Exception{
return supplier;
}
}
(您也可以将上面的模型建模为没有 FactoryBean 的 Supplier 类,Spring 的用法保持不变。只需确保它为每次调用返回一个新实例。)
现在您可以连接更复杂的方法。示例:
<bean class="foo.bar.Bean">
<property name="map">
<bean class="com.google.common.collect.Multimaps"
factory-method="newSetMultimap">
<constructor-arg>
<bean class="java.util.HashMap" />
</constructor-arg>
<constructor-arg>
<bean class="foo.bar.SupplierFactoryBean">
<constructor-arg value="java.util.TreeSet" />
</bean>
</constructor-arg>
</bean>
</property>
</bean>
上面的两个例子都使用了静态工厂方法。这是 Spring Reference 中的相应章节:3.3.2.2 Instantiation with a static factory method
关于java - 使用 Spring 注入(inject) Google Guava Hashmultimap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4622821/
我正在使用HashMultiMap在我的代码中。我的 HashMultiMap 结构如下: Key1 -> Value11 -> Value12 -> Value13 .... Key2 -> Val
Multimaps 开始吸引我。这就是我创建 map 的方式。 Map> valuesMap = new HashMap>(); 那么第二个内层Map就是这个 Multimap mm = new Ha
我有两个 hashmultimaps 。如何比较给定键的多重映射的值。 我想我会从 HashMultiMap 生成一个 TreeSet类似 ts1=new TreeSet(hmap.get(key))
如何将键值对添加到由用户类型声明的成员 HashMultiMap 上的实例?也许我做错了什么 #r"FSharp.PowerPack" type Test() = membe
我使用下面的代码从 google HashMultimap 获取并处理值 HashMultimap hmm = new HashMultimap(); HashMultimap hmm
我创建了以下类型的哈希多重映射:键作为一对字符串,字符串和值作为 long。 HashMultimap, Long> hm = HashMultimap.create(); 我已经使用 put 函数在
我看到很多关于 multimap 的示例,但不明白为什么 Google Guava 与众不同? Multimap> option4 = HashMultimap.create(); // Gauva
我每分钟都有一个带有时间戳的统计数据流(每分钟的任意数量的统计数据)。这只是一个持续的统计数据流,不允许更改之前的数据。这里也不存在并发问题。所以适当的数据结构是 map> 。然而,这个映射只需要保留
我想将 HashMultiMap 打印为 json。 HashMultimap multimap = HashMultimap.create(); multimap.put("a",Obj1); mu
XML: 正确吗?当我尝试将此 bean 注入(inject)另一个 bean 时,例如: 我收到错误:无法将属性值应用于 null 实例 最佳答案 试试这个
是否可以提供创建 Multimap 的示例?使用 Spring ? 我很好奇如何在应用程序上下文 XML 文件中完成它。 最佳答案 Google Collections已弃用 Guava ,所以我会回
MultiMap mm = HashMultimap.create(); 我在 create() 下看到一条红线,上面写着: “不存在类型变量 V,K 的实例,因此 HashMultiMap 符合 M
我是一名优秀的程序员,十分优秀!