小编Mik*_*378的帖子

如何使用JavaConversions将Map的Iterator从Java转换为Scala

我使用Scala 2.10.3.
result.iterator()回来了Iterator<java.util.Map<String, Object>>.(在Java中)

我想将它转换为Scala等价物.
import scala.collection.JavaConversions._用来试图做到这一点.

但是,它似乎无法考虑类型参数,在这种情况下,它可以转换java.util.Iterator为Scala等效项,但无法转换java.util.Map为Scala等效项.

实际上,此行发生编译器错误:

val results: Iterator[Map[String, AnyRef]] = result.iterator()

    type mismatch;
     found   : java.util.Iterator[java.util.Map[String,Object]]
     required: scala.collection.Iterator[scala.collection.immutable.Map[String,AnyRef]]
     val results: Iterator[Map[String, AnyRef]] = result.iterator()
                                                                ^
Run Code Online (Sandbox Code Playgroud)

有没有简短的方法来做这个伎俩?

scala scala-java-interop scala-collections

1
推荐指数
1
解决办法
695
查看次数

合并这些列表的有效方法是什么?

让我们假设这四个字符串列表:

List("123::foo") 
List("456::bar") 
List("123::hello") 
List("456::scala")
Run Code Online (Sandbox Code Playgroud)

什么是最终的有效方式:

List("123","foo","hello")
List("456","bar","scala") 
Run Code Online (Sandbox Code Playgroud)

并期望为大量的初始列表工作.

collections functional-programming scala

1
推荐指数
1
解决办法
155
查看次数

Cypher /阻止shortestPath函数来检索不涉及至少一个遍历关系的节点

关于cyper请求的摘录:(假设element在整个请求中是已知的节点变量)

MATCH p = shortestPath(element-[:LINKS*..3]-(user))
RETURN length(p)
Run Code Online (Sandbox Code Playgroud)

假设一个element可能是a user,我怎么能阻止在结果中检索element代表用户本身?

如果我们可以这样做会很酷:

MATCH p = shortestPath(element-[:LINKS*1..3]-(user))
RETURN length(p)
Run Code Online (Sandbox Code Playgroud)

但它导致了这个错误:

shortestPath(...) does not support a minimal length
Run Code Online (Sandbox Code Playgroud)

实现这一伎俩最有效的方法是什么?

neo4j graph-databases cypher

1
推荐指数
1
解决办法
207
查看次数

String类的`replace()`方法是否违反命令查询分离?

命令查询分离建议每个方法应该是执行操作的Command,或者是将数据返回给调用者的Query:

但是比如String类的replace()方法呢.

它的签名是:String replace(String str);

它违反了CQS,不是吗?

承认它违反了,我看不出我们如何解决它,以便作为Command的replace()可以通知调用者最新的String.实际上,根据CQS的命令必须具有返回类型的空白.

java design-patterns coding-style

0
推荐指数
1
解决办法
119
查看次数

尴尬的Var-args论点

假设这段代码:

public class Test{

    public static void main(String[] args) {
        Test.testInt(new int[]{2,3});
        Test.testInteger(new Integer[]{2,3});
    }

    public static void testInt(Object... elements){
      System.out.println(elements[0] instanceof int[]);
    }

    public static void testInteger(Object... elements){
      System.out.println(elements[0] instanceof Integer);
    }

}
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,一个人都希望有一个包含2和3的一维数组.所以预期的输出应该是第一眼:

false
true
Run Code Online (Sandbox Code Playgroud)

惊喜!实际输出是:

true
true
Run Code Online (Sandbox Code Playgroud)

本次更新的最新消息:

实际上,这不是一个好问题,因为我没有意识到这种情况符合Var-args规则.

总而言之,即使Var-args是参数,int []数组也不能自动装箱到Integer []; 没有特殊的待遇.

java variadic-functions

0
推荐指数
1
解决办法
131
查看次数