这是间更好的实践 Boolean.valueOf()和Java 1.5 autoboxing创造Boolean的booleans,为什么?
来自JavaDoc HashMap:
作为一般规则,默认加载因子(.75)在时间和空间成本之间提供了良好的权衡.较高的值会减少空间开销,但会增加查找成本(反映在HashMap类的大多数操作中,包括get和put).
如果我们有更高的价值,为什么会增加查询成本?
Java集合/ Guava/Apache Commons库中是否有任何Red Black Tree/ AVL Tree data结构实现?如果是的话,你能指点我吗?基本上我正在寻找一种数据结构,其中查询应该在O(lg n)时间内发生.数据结构也会有一些更新,但不像查询那样频繁.
来自着名的书籍Java Concurrency in Practice chapter 3.4.1 Final fields
正如将所有字段设为私有一样是好的做法,除非它们需要更高的可见性[EJ第12项],所以将所有字段设为最终都是一个好习惯,除非它们需要是可变的.
我对Java中最终引用的理解:最终引用/字段只是阻止该字段重新初始化,但如果它引用了一个可变对象,我们仍然可以改变它的状态,使其变为可变.所以我很难理解上面的引用.你怎么看 ?
Java中任何对象的编译时间和运行时类型有什么区别?我正在阅读有效Java书籍,Joshua Bloch多次提及项目26中编译时间类型和数组实例的运行时类型,主要是为了描述抑制强制转换警告有时是安全的.
// Appropriate suppression of unchecked warning
public E pop() {
if (size == 0)
throw new EmptyStackException();
// push requires elements to be of type E, so cast is correct
@SuppressWarnings("unchecked") E result = (E) elements[--size];
elements[size] = null; // Eliminate obsolete reference
return result;
}
Run Code Online (Sandbox Code Playgroud)
在这里,作者正在讨论这些不同类型types的数组上下文.但通过这个问题,我想了解compile time typesvs run time types对于任何类型的对象的区别.
考虑Effective Java泛型章节中UnaryFunction定义的接口.
public interface UnaryFunction<T> {
T apply(T arg);
}
Run Code Online (Sandbox Code Playgroud)
和以下代码返回 UnaryFunction
// Generic singleton factory pattern
private static UnaryFunction<Object> IDENTITY_FUNCTION = new UnaryFunction<Object>() {
public Object apply(Object arg) { return arg; }
};
// IDENTITY_FUNCTION is stateless and its type parameter is
// unbounded so it's safe to share one instance across all types.
@SuppressWarnings("unchecked")
public static <T> UnaryFunction<T> identityFunction() {
return (UnaryFunction<T>) IDENTITY_FUNCTION;
}
Run Code Online (Sandbox Code Playgroud)
为什么演员IDENTITY_FUNCTION要(UnaryFunction<T>)安全?
这本书说的是我要问的问题,但我不能遵循这里的逻辑.我们在哪里调用apply执行身份操作的函数?我很困惑,因为它是返回传递给它的同一个对象而不修改任何东西的函数.
IDENTITY_FUNCTION
(UnaryFunction<T>) …
我知道,System.currentTimeMillis()自纪元以来,它给出了以毫秒为单位的时间,并且它对系统的挂钟时间很敏感.我也知道不建议用来System.currentTimeMillis()计算测量时间的程序中的经过时间.Java库已经System.nanoTime()为此提供了帮助.
我有两个具体问题System.currentTimeMillis():
Java提供 AtomicInteger,AtomicLong等等,基本上编译成 CAS指令在硬件层面.但是,为什么这样AtomicXXX类不存在其他原始类型,如short和浮点数喜欢float和double?
虽然我在程序员应该考虑抓住RuntimeExceptions的时候用Java编程吗?
java ×10
generics ×2
atomic ×1
collections ×1
datetime ×1
dst ×1
exception ×1
guava ×1
hash ×1
hashmap ×1
hashtable ×1
immutability ×1
performance ×1
time ×1
tree ×1