根据以下链接文档: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) 我的代码出了什么问题?
我想删除所有的元素开始一个来自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不会从列表中删除任何内容.
在下面的代码中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
我有一个大小为 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 的代码。提前致谢
我在 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 ?
以下代码输出始终为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)
问题是组合器影响我的代码的原因.
使用Lists和Maps,我开始思考,为什么添加的Map方法Object被称为put而对于List来说add呢?
它只是开发人员的意愿,或者在命名这些方法时有所不同.
可能是开发人员在添加Map/使用List何种数据结构时知道的方法名称?或者那些名字描述了他们的工作方式?
当我们向流API提供一些输入时,它将其分成块,JVM创建多个线程以在该块上执行执行.
题 :-
如果我给出了数百万个条目ArrayList作为并行管道的输入,并且在List by JVM上的计算的前半部分之后发生内部线程异常.
JVM如何处理ROll Back.
JVM真的回滚到了原始状态吗?
我有和平的代码谁做串的连接: -
String _? = "Hello ";
String _? = "World";
String _?? = " !!";
System.out.println(_??+_??+_??+_??+_?+_?+_??);
Run Code Online (Sandbox Code Playgroud)
代码的输出是: -
!! !! !! !!Hello World !!
Run Code Online (Sandbox Code Playgroud)
我有几个问题: -
如果我这样编码:
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 ×10
java-8 ×7
java-stream ×2
add ×1
arrays ×1
class ×1
concurrency ×1
dictionary ×1
difference ×1
groovy ×1
hashmap ×1
java-time ×1
list ×1
period ×1
put ×1