小编Zhe*_*lov的帖子

什么是自动模块?

在stackoverflow上多次提到自动模块,但我找不到自动模块的完整,简洁和自给自足的定义.

那么,什么是自动模块?它是否导出所有包裹?它打开所有包裹吗?它是否读取所有其他模块?

java java-platform-module-system java-9 java-module

23
推荐指数
3
解决办法
4129
查看次数

java 10和kotlin中的"var"

我知道我们可以使用"var"关键字在Kotlin中定义变量:

var foo = 3
Run Code Online (Sandbox Code Playgroud)

最新的java更新(java 10)也引入了"var"类型:

var bar = new int[]{1, 2, 3}; // int[] bar = {1, 2, 3}
Run Code Online (Sandbox Code Playgroud)

我的问题是,这些语言之间使用"var"的区别是什么?

java var kotlin java-10

23
推荐指数
3
解决办法
2430
查看次数

是否存在逆变单子?

函数可以是协变的和逆变的.这种协变/逆变二元性也可以应用于monad吗?

就像是:

class Monad m where
  return :: a -> m a
  (>>=) :: m a -> (a -> m b) -> m b    

class ContraMonad m where
  return :: a -> m a
  contrabind :: m a -> (b -> m a) -> m b
Run Code Online (Sandbox Code Playgroud)

请问ContraMonad类有意义吗?任何例子?

monads haskell category-theory

21
推荐指数
2
解决办法
1470
查看次数

无法使用Tycho和Java 9构建Eclipse RCP项目

我的Eclipse RCP Maven项目使用Java 8构建得很好,但是在Java 9中失败了:

[INFO] Scanning for projects...
[WARNING] Could not start bundle org.eclipse.equinox.registry
org.osgi.framework.BundleException: Could not resolve module: org.eclipse.equinox.registry [42]
  Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="[3.7.0,4.0.0)"
    -> Bundle-SymbolicName: org.eclipse.equinox.common; bundle-version="3.8.0.v20160315-1450"; singleton:="true"
       org.eclipse.equinox.common [18]
         Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=1.7))"
  Unresolved requirement: Import-Package: org.eclipse.core.runtime.jobs; resolution:="optional"
    -> Export-Package: org.eclipse.core.runtime.jobs; bundle-symbolic-name="org.eclipse.core.jobs"; bundle-version="3.8.0.v20160209-0147"; version="0.0.0"
       org.eclipse.core.jobs [6]
         Unresolved requirement: Require-Bundle: org.eclipse.equinox.common; bundle-version="[3.8.0,4.0.0)"
           -> Bundle-SymbolicName: org.eclipse.equinox.common; bundle-version="3.8.0.v20160315-1450"; singleton:="true"

    at org.eclipse.osgi.container.Module.start(Module.java:434)
    at org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:392)
    at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.tryActivateBundle(DefaultEquinoxEmbedder.java:215)
    at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.activateBundlesInWorkingOrder(DefaultEquinoxEmbedder.java:207)
    at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.doStart(DefaultEquinoxEmbedder.java:182)
    at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.start(DefaultEquinoxEmbedder.java:67)
    at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.checkStarted(DefaultEquinoxEmbedder.java:310)
    at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:286)
    at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.getService(DefaultEquinoxEmbedder.java:280) …
Run Code Online (Sandbox Code Playgroud)

java osgi tycho maven java-9

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

有没有一种优雅的方法将Map <P,Optional <Q >>转换为稀疏Map <P,Q>?

是否有一种优雅的方式将其转换Map<P, Optional<Q>>为稀疏Map<P, Q>

这应该工作,但它有点meh:

Map<P,Optional<Q>> map = ...;
Map<P,Q> map2 = map.entrySet()
                  .stream().filter(e -> e.getValue().isPresent())
                  .collect(Collectors.toMap(e -> e.getKey(), e->e.getValue().get()));
Run Code Online (Sandbox Code Playgroud)

java functional-programming java-8 java-stream

19
推荐指数
3
解决办法
935
查看次数

为什么将数据写入磁盘的速度和保存在内存中一样快?

我有以下10000000x2矩阵:

0        0
1        1
2        2
..       ..
10000000 10000000
Run Code Online (Sandbox Code Playgroud)

现在我想将这个矩阵保存到int[][]数组:

import com.google.common.base.Stopwatch;

static void memory(int size) throws Exception {
    System.out.println("Memory");

    Stopwatch s = Stopwatch.createStarted();

    int[][] l = new int[size][2];
    for (int i = 0; i < size; i++) {
        l[i][0] = i;
        l[i][1] = i;
    }

    System.out.println("Keeping " + size + " rows in-memory: " + s.stop());
}

public static void main(String[] args) throws Exception {
    int size = 10000000;
    memory(size);
    memory(size);
    memory(size);
    memory(size);
    memory(size);
} …
Run Code Online (Sandbox Code Playgroud)

java io

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

字符串的不区分大小写的模式匹配

match (str) {
  case "String1" => ???
  case "String2" => ???
}
Run Code Online (Sandbox Code Playgroud)

这是区分大小写的匹配.如何编写不区分大小写的匹配?我知道我可以为每个分支调用toLowerCase,但我想要更优雅的解决方案.

scala

17
推荐指数
3
解决办法
2万
查看次数

Java 9是否包含Graal?

我正在读JEP 317.它说Graal(一个新的基于实验Java的JIT编译器)将成为JDK 10的一部分,但后来它说已经在JDK 9中可用了.那么,JEP 317的重点是什么呢?Java 9是否包含Graal?

java java-9 java-10 graalvm

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

变量已经在方法lambda中定义

考虑以下几乎可编译的Java 8代码:

public static void main(String[] args) {

    LinkedList<User> users = null;
    users.add(new User(1, "User1"));
    users.add(new User(2, "User2"));
    users.add(new User(3, "User3"));

    User user = users.stream().filter((user) -> user.getId() == 1).findAny().get();
}

static class User {

    int id;
    String username;

    public User() {
    }

    public User(int id, String username) {
        this.id = id;
        this.username = username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8

16
推荐指数
2
解决办法
1万
查看次数

如何将两个已排序的Observable合并为一个已排序的Observable?

鉴于:

Integer[] arr1 = {1, 5, 9, 17};
Integer[] arr2 = {1, 2, 3, 6, 7, 12, 15};
Observable<Integer> o1 = Observable.from(arr1);
Observable<Integer> o2 = Observable.from(arr2);
Run Code Online (Sandbox Code Playgroud)

如何获得包含的Observable 1, 1, 2, 3, 5, 6, 7, 9, 12, 15, 17

java system.reactive rx-java

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