小编Sud*_*ddy的帖子

使用lambdas和stream按值排序映射

我是Java 8的新手,不知道如何使用流和它的排序方法.如果我有如下地图,如何按值对此地图进行排序,以便只使用Java 8获取前10个条目.

HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("a", 10);
        map.put("b", 30);
        map.put("c", 50);
        map.put("d", 40);
        map.put("e", 100);
        map.put("f", 60);
        map.put("g", 110);
        map.put("h", 50);
        map.put("i", 90);
        map.put("k", 70);
        map.put("L", 80);
Run Code Online (Sandbox Code Playgroud)

我知道在Java 8之前,我们可以将这个链接排序:https://stackoverflow.com/a/109389/4315608

java java-8 java-stream

36
推荐指数
3
解决办法
6万
查看次数

散列函数在Java中仅用5位数字生成散列值

我已经使用hashCode()StringAPI的方法,它为以下代码生成的值为99162322:

String str = "hello";           
System.out.println(str.hashCode());
Run Code Online (Sandbox Code Playgroud)

是否有任何Java API可以生成仅5位数字(63346)的哈希值,例如下面的Oracle SQL?

select ORA_HASH('hello','99999') from dual  --63346
Run Code Online (Sandbox Code Playgroud)

java oracle hash

4
推荐指数
2
解决办法
4719
查看次数

设置为值的Java 8地图计算

我的地图看起来像这样

private Map<String, LinkedHashSet<String>> map = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

在传统方法中,我可以通过按键检查为地图添加价值,如下所示

public void addEdge(String node1, String node2) {
        LinkedHashSet<String> adjacent = map.get(node1);
        if (adjacent == null) {
            adjacent = new LinkedHashSet();
            map.put(node1, adjacent);
        }
        adjacent.add(node2);
    }
Run Code Online (Sandbox Code Playgroud)

使用Java 8,我可以做这样的事情,与此同时我也得到相同的输出。

map.compute(node1, (k,v)-> {
            if(v==null) {
                v=new LinkedHashSet<>();
            }
            v.add(node2);
            return v;
            });
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来处理Java 8?

java-8

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

如何使用java 9终止当前进程

我试过两个destroydestroyForcibly使用下面的代码 -

ProcessHandle currentProcess = ProcessHandle.current();
System.out.println("current process id:"+currentProcess.getPid());
currentProcess.destroyForcibly();
Run Code Online (Sandbox Code Playgroud)

但在两种情况下都获得例外

线程"main"中的异常java.lang.IllegalStateException:java.base/java.lang.ProcessHandleImpl.destroyForcibly中java.base/java.lang.ProcessHandleImpl.destroyProcess(ProcessHandleImpl.java:308)中不允许销毁当前进程( ProcessHandleImpl.java:331)在util.CurrentProcess.main(CurrentProcess.java:18)

java-9 processhandle

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

条件运算符(三元运算符)出现空指针异常,但 if else 则不出现空指针异常

如果我使用三元运算符,我会收到空​​指针异常。

Integer val = null;
Object res = val == null ? val : val.intValue();
Run Code Online (Sandbox Code Playgroud)

但不能与 if else 一起使用

    Integer val = null;
    Object res;
  if( val == null ) {
      res  = val;
  } else {
      res = val.intValue();
  }
Run Code Online (Sandbox Code Playgroud)

谁能解释一下为什么吗?

谢谢苏达尔

java nullpointerexception

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