小编Has*_*hra的帖子

HashMap Java 8实现

根据以下链接文档:Java HashMap Implementation

我对HashMap(或者更确切地说是增强HashMap)的实现感到困惑.我的疑问是:

首先

static final int TREEIFY_THRESHOLD = 8;
static final int UNTREEIFY_THRESHOLD = 6;
static final int MIN_TREEIFY_CAPACITY = 64;
Run Code Online (Sandbox Code Playgroud)

为什么以及如何使用这些常量?我想要一些明确的例子. 他们如何通过这个获得性能提升?

其次

如果您HashMap在JDK中看到源代码,您将找到以下静态内部类:

static final class TreeNode<K, V> extends java.util.LinkedHashMap.Entry<K, V> {
    HashMap.TreeNode<K, V> parent;
    HashMap.TreeNode<K, V> left;
    HashMap.TreeNode<K, V> right;
    HashMap.TreeNode<K, V> prev;
    boolean red;

    TreeNode(int arg0, K arg1, V arg2, HashMap.Node<K, V> arg3) {
        super(arg0, arg1, arg2, arg3);
    }

    final HashMap.TreeNode<K, V> root() {
        HashMap.TreeNode arg0 …
Run Code Online (Sandbox Code Playgroud)

java dictionary hashmap java-8

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

使用方法引用从List中删除元素

我的代码出了什么问题?

我想删除所有的元素开始一个来自List list:

public static void main(String[] args) {

    Predicate<String> TTT = "A"::startsWith;
    List<String> list = new ArrayList<>();

    list.add("Magician");
    list.add("Assistant");
    System.out.println(list); // [Magician, Assistant]

    list.removeIf(TTT);
    System.out.println(list); // expected output: [Magician]

}
Run Code Online (Sandbox Code Playgroud)

但是,removeIf不会从列表中删除任何内容.

java java-8

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

ScheduleAtFixedRate未使用Future java 8提供输出

在下面的代码中scheduleAtFixedRate无休止地运行.

所以问题是: -

为什么java提供无限的线程执行场景

Runnable task1 = () -> System.out.println("Hello Zoo");
Future<?> result = service1.scheduleAtFixedRate(task1, 8, 2, TimeUnit.SECONDS);
System.out.println(result.get());
System.out.println(result.isDone());
Run Code Online (Sandbox Code Playgroud)

程序从不打印输出result.get()应为null或System.out.println(result.isDone());应为0.

所以我在调用scheduleAtFixedRate代码之后的观点应该是无法访问的.

java concurrency scheduled-tasks java.util.concurrent java-8

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

在lamdas中工作的方法参考分配

嗨问题很简单.

String::startWith和之间有什么区别""::startWith

java java-8

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

如何使用流API将数组划分为子数组

我有一个大小为 1000 的数组。我想使用流操作来执行如下操作:-

List list= new ArrayList();
//list is initialize to 1000 elements 

  List subList = list.subList(0, 100);
   // perform some operaions over the subarray
  List subList1 = list.subList(101, 200);
   // perform some operaions over the subarray
 .... so on
}
Run Code Online (Sandbox Code Playgroud)

我想要使​​用流 API 的代码。提前致谢

java arrays list java-8 java-stream

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

为什么在 Groovy Map.class 中返回 null?

我在 Groovy 中有一段简单的代码:

ErrorInfoVO vo = new ErrorInfoVO();
Object obj1 = vo;
System.out.println(obj1.class.getName());
System.out.println(obj1.getClass().getName());

Map map = new HashMap()
Object obj2 = map
System.out.println(obj2.getClass().getName());
System.out.println(obj2.class.getName());
Run Code Online (Sandbox Code Playgroud)

输出是:

com.vo.ErrorInfoVO
com.vo.ErrorInfoVO
java.util.HashMap
Exception in thread "main" java.lang.NullPointerException:
Run Code Online (Sandbox Code Playgroud)

为什么obj2.class返回 null ?

groovy

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

为什么Combiner不影响输出?

以下代码输出始终为24.

public static void main(String[] args) throws InterruptedException {
    List<String> list = new ArrayList<String>();
    list.add("java");
    list.add("php");
    list.add("python");
    list.add("perl");
    list.add("c");
    list.add("lisp");
    list.add("c#");
    int s = list.stream().reduce(0, (x, y) -> x + y.length(), (x, y) -> 0);
    System.out.println(s);
    s = list.stream().reduce(0, (x, y) -> x + y.length(), (x, y) -> x - y);
    System.out.println(s);
    s = list.stream().reduce(0, (x, y) -> x + y.length(), (x, y) -> x * y);
    System.out.println(s);

}   
Run Code Online (Sandbox Code Playgroud)

问题是组合器影响我的代码的原因.

java java-8 java-stream

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

Java List.add()和Map.put()

使用ListsMaps,我开始思考,为什么添加的Map方法Object被称为put而对于List来说add呢?

它只是开发人员的意愿,或者在命名这些方法时有所不同.

可能是开发人员在添加Map/使用List何种数据结构时知道的方法名称?或者那些名字描述了他们的工作方式?

java add put difference

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

JVM Stream API RollBack

当我们向流API提供一些输入时,它将其分成块,JVM创建多个线程以在该块上执行执行.

题 :-

如果我给出了数百万个条目ArrayList作为并行管道的输入,并且在List by JVM上的计算的前半部分之后发生内部线程异常.

JVM如何处理ROll Back.

JVM真的回滚到了原始状态吗?

java java-8

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

带有_ named的java中的字符串声明

我有和平的代码谁做串的连接: -

String _? = "Hello ";
String _? = "World";
String _?? = " !!";
System.out.println(_??+_??+_??+_??+_?+_?+_??);
Run Code Online (Sandbox Code Playgroud)

代码的输出是: -

!! !! !! !!Hello World !!
Run Code Online (Sandbox Code Playgroud)

我有几个问题: -

  1. 我们如何声明相同的命名变量(_)
  2. 如何计算输出

java

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

java 8中的Periods类实现

如果我这样编码:

Period wrong = Period.ofYears(1).ofWeeks(1);
Run Code Online (Sandbox Code Playgroud)

它给出了输出P7D.

通过Period类的实现,我们知道所有of____()方法都是静态的.

但是,如果你与DateTime班级做同样的链接:

LocalDate date = LocalDate.of(2020, Month.JANUARY, 20);
LocalTime time = LocalTime.of(5, 15);
LocalDateTime dateTime = LocalDateTime.of(date, time)
  .minusDays(1).minusHours(10).minusSeconds(30);
Run Code Online (Sandbox Code Playgroud)

All minus___()plus___()方法是LocalDateTime类中的实例方法.

问题:为什么课程不允许进行方法链接Period

为什么Period班级不支持?

内部任务如何进行?

java class period method-chaining java-time

-2
推荐指数
3
解决办法
578
查看次数