同时尝试将Vavr的不可变映射(io.Vavr.collection.HashMap)与java结合使用。util。映射
接口时,我没有设法获得要编译的代码-至少没有使用。of()io中的静态方法。vavr。收集HashMap。
本质上,这就是我使用的Maven依赖关系:
<dependency>
<groupId>io.vavr</groupId>
<artifactId>vavr</artifactId>
<version>0.9.2</version>
</dependency>
使用Java 1.8
代码如下:
import io.vavr.collection.HashMap;
import java.util.Map;
public class EntityKeyMap {
public static final Map<String, String> map =
HashMap.of("key1", "val1", "key2", "val2", "key3", "val3");
private EntityKeyMap() {
}
}
这是我得到的错误:
不兼容的类型。必需的映射,但已将“of”推断为HashMap:不存在类型变量K,V的实例,因此HashMap符合映射
知道如何将io.vavr.collection.HashMap
的实例分配给java.util.Map
吗?这可能吗?
根据io.vavr.collection.HashMap
留档实现了java.util.Map
接口:
https://static.javadoc.io/io.vavr/vavr/0.9.2/io/vavr/collection/HashMap.html
在web上有一些可能的示例,例如在本博客上,您可以找到以下代码:
Map<String, String> map1
= HashMap.of("key1", "val1", "key2", "val2", "key3", "val3");
有toJavaMap
方法正是为此目的:
将此Vavr映射转换为java。util。映射时保留插入顺序(LinkedHashMap)和排序顺序(SortedMap)等特征。
import io.vavr.collection.HashMap;
public class VavrPlayground {
public static final HashMap<String, String> map =
HashMap.of("key1", "val1", "key2", "val2", "key3", "val3");
public void EntityKeyMap() {
java.util.Map<String, String> jMap = map.toJavaMap();
}
}
Vavr的HashMap没有实现JDK的Map接口。它实现的映射接口是vavr自己的映射接口。
与JDK的映射相反,vavr的映射表示一个不可变的映射,哈希映射是一个基于哈希数组映射的trie的高效持久映射实现。
JDK映射接口和vavr映射接口之间最根本的区别在于,JDK映射具有改变映射内部状态的方法,而vavr的方法总是返回一个新的映射实例(或者在映射未更改的情况下返回相同的实例)。
比较JDK的
Map.put
vs vavr的Map.put
方法签名。
Map.put:
V put(K key, V value)
将指定值与此映射中的指定键相关联(可选操作)。如果映射之前包含键的映射,则旧值将替换为指定值。(当且仅当m.containsKey(k)返回true时,称映射m包含键k的映射。)
返回:与键关联的前一个值,如果键没有映射,则返回null。(如果实现支持null值,则null返回还可以指示之前将null与key关联的映射。)
vavr<代码>地图。放置
:
Map<K,V> put(K key, V value)
将指定值与此映射中的指定键相关联。如果映射之前包含键的映射,则旧值将替换为指定值<返回:包含这些元素和该条目的新映射。
如果需要JDK映射,可以使用映射转换vavr映射。toJavaMap,但这将创建映射内容的完整副本,因为JDK映射的可变特性与vavr的不变方法不兼容。
我想让flume代理位于hadoop集群之外,并想知道是否有可能使用flume通过WebHDFS向hadoop集群发送消息。 如果没有,是否有使用WebHDFS的替代方案?使用多层水槽层仍然需要我在hadoop集群中运行水槽代理。
是否可以在AWS Lambda中构建一个函数来创建websocket并将数据发送到订阅的应用程序? 类似这样: John在他的手机中打开了应用程序SuperPhotoApp,但决定使用桌面浏览器将照片上传到SuperPhotoApp服务(S3 Bucket),此事件执行创建套接字的Lambda函数。io服务器并将更新推送到所有订户,他的手机打开了应用程序,因此应用程序会自动更新新照片。 这可以通过
问题内容: 我对正则表达式很糟糕,但是我想知道是否可以将ng-pattern与变量一起使用 例如, 其中validationCode是控制器中附加到$ scope的变量 如果 则ng-pattern将是 但这不起作用,似乎我需要创建一个我真的不想要的自定义指令 问题答案: 需要一个正则表达式。 从Angular的文档中有关: 如果该值与模式表达式不匹配,则设置模式验证错误键。期望值用于内联模式或定
我对Spring webflux和protobuf都是新手。我一直在读一些东西,我发现它们之间有一些相似之处。喜欢 Spring webflow可以部署在netty上,gRPC也是如此。 两者都适用于流数据。 这两个框架都在某种程度上基于观察者设计模式,支持基于均匀的数据处理方法。 然而,我仍然找不到任何结合webflux(反应式编程)、gRPC(更快的数据编码和解码)和Spring(依赖注入)功
我一直使用ElasticsearchIntegrationTest在没有elasticsearch服务器的情况下测试我的代码。我的类中的私有成员很少,所以考虑使用Powermock访问私有成员。在运行测试时,我得到异常。 Powermock是否可以与ElasticSearchintegrationTest一起使用?? 代码: 例外情况: 原因:javassist.CanNotCompileExce
问题内容: Facelets依赖XML名称空间来与XHTML一起使用。HTML 4怎么样,据我所知,HTML 5不支持名称空间。HTML 5还具有XHTML中不可用的一些新元素。甚至HTML 4和XHTML在它们支持的元素和属性上也有一些差异。 问题是:是否可以使用Facelets呈现HTML 4/5文档?如果是这样,怎么办? 问题答案: 由于Facelets是一种基于XML的视图技术,本质上可以