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));

 

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