当前位置: 首页 > 知识库问答 >
问题:

是否可以将地图界面与io.vavr.collection.HashMap一起使用?

商飞尘
2023-03-14

同时尝试将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");

共有2个答案

慕嘉运
2023-03-14

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();
   }

}
柴砚文
2023-03-14

Vavr的HashMap没有实现JDK的Map接口。它实现的映射接口是vavr自己的映射接口。

与JDK的映射相反,vavr的映射表示一个不可变的映射,哈希映射是一个基于哈希数组映射的trie的高效持久映射实现。

JDK映射接口和vavr映射接口之间最根本的区别在于,JDK映射具有改变映射内部状态的方法,而vavr的方法总是返回一个新的映射实例(或者在映射未更改的情况下返回相同的实例)。

比较JDK的Map.putvs 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的视图技术,本质上可以