NFA到DFA的转换(很多JAVA细节)

TreeSet其实是使用红黑树实现,和哈希没有关系,排序时不调用hashCode,HashSet会调用hashCode取得对象保存的位置,当同调用默认toString时会使用hashCode生成String

TreeSet排序时不主动调用equals(存疑),但是会主动调用compareTo

当对象不能比大小时,只能确定其是否相等,会先调用hashCode,hashCode相等时会调用equals

TreeSet中与比较大小相关的属性被改变时,不会对其重新排序,目前较好的做法是移除原来的对象,改变后重新插入

面向对象的过程中不能用力过猛,有一些实现可以留给其他模块

还有个最奇怪的,Set、List这些容器中保存另一个容器时,比较是否相等时好像是比较最内部的对象,而不是内层的容器对象就像这里hh1不包含hashSet2但是打印的时true,但如果把注释加上,打印变为false(有时间一定研究一下,这个很重要)

       P p1 = new P(),p2 = new P(), p3 = new P();
       hashSet1.add(p1);
       hashSet2.add(p1);
       //hashSet1.add(p2);
       hh1.add(hashSet1);
       hh2.add(hashSet2);
       System.out.println(hh1.contains(hashSet2));

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章