从TreeMap的JavaDoc:
请注意,如果此有序映射要正确实现Map接口,则由有序映射维护的排序(无论是否提供显式比较器)必须与equals一致.(请参阅Comparable或Comparator以获得与equals一致的精确定义.)这是因为Map接口是根据equals操作定义的,但是map使用compareTo(或compare)方法执行所有键比较,因此有两个键从排序地图的角度来看,通过这种方法被视为相等的是相等的.即使排序与equals不一致,也可以很好地定义有序映射的行为.它只是不遵守Map接口的一般合同.
有人可以给出一个具体的例子来说明如果排序与equals不一致可能会出现的问题吗?举例来说,用户定义的类具有自然顺序,即它实现了Comparable.JDK中的所有内部类都保持这个不变量吗?
我已经通过 这个关于前向引用的合法性的问题,但不清楚forward referencesJava语言的含义.有人可以借助一个例子来解释吗?
从Java并发实践中的书:
要安全地发布对象,必须同时使对象的引用和对象的状态对其他线程可见.正确构造的对象可以通过以下方式安全发布:
从静态初始化程序初始化对象引用
将对它的引用存储到volatile字段或AtomicReference中
将对它的引用存储到正确构造的对象的最终字段中
将对它的引用存储到由
锁正确保护的字段中.
我的问题是:
volatile方法和final方法在安全发布对象方面的区别感兴趣.this引用转义).但他们为什么再次提到正确构造的物体呢?根据这篇博客, JSF将无国籍.使用JSF的重点不在于它使保存和恢复状态成为一件苦差事.JSF成为无国籍的重点是什么?能否请您提供一个有用的示例.
Brian Goetz撰写本文的第一行让我在SO中发布这个问题.这又是一行:
为动态编译语言(如Java)编写和解释性能基准要比使用C或C++这样的静态编译语言困难得多.
我知道静态类型与动态类型语言的答案.但动态编译语言与静态编译语言之间有什么区别?
c java compiler-construction programming-languages compilation
我正在阅读B树,看起来他们在O(lg n)时间内实现了动态集合操作.红黑树(Java中的TreeMap)也在渐近相同的时间范围内实现相同的操作.所以我想知道是什么让B树对数据库和文件系统更有用
Facelets ui:composition和ui:decorateFacelets 之间有什么区别?两者似乎都支持ui:define儿童标签.在什么情况下你会使用这些?
我知道State pattern可以用来模拟根据状态改变行为的对象,并且Context可以具有的各种状态被封装在表示State接口的具体类中.我不清楚的是状态转换是如何在这种模式中发生的.个人是否states知道并决定谁跟随他们,或者Context决定下一个会接下来的状态?
所述的生命周期 @RequestScoped和@SessionScopedBean 管理豆由Servlet容器自身管理,因为它们是基本上作为一个属性存储HttpRequest和HttpSession分别.JSF如何管理生命周期@ViewScopedBean?我知道它是在创建视图时创建的,并且可以使用,直到有回发到另一个视图.但是我发现在我们离开那个视图后不会立即收集垃圾.
java ×7
jsf ×3
jsf-2 ×3
b-tree ×1
binary-tree ×1
c ×1
comparable ×1
comparator ×1
comparison ×1
compilation ×1
destroy ×1
equals ×1
facelets ×1
java-ee ×1
jvisualvm ×1
jvm ×1
managed-bean ×1
mojarra ×1
profiling ×1
state ×1
tree ×1
view-scope ×1