關於TreeSet的元素改變field後的刪除

2021-06-21 15:11:45 字數 854 閱讀 2754

李剛書中p290 關於treeset刪除情況,自己實驗的結果與書中不一致,說明如下:

treeset中的可變物件改變了屬性後,如果還能夠保證正確的公升序,那麼依然可以正常刪除,如果改變了這個順序,那麼就無法刪除了;另外,如果改變了的屬性和原來存在的某個位置的元素相等,如果這兩個元素不是相鄰的,那麼改變了的那個一定打亂了正確的順序,那麼改變了的那個就刪不掉,但是未改變的那個可以被刪掉,看程式吧。

值得說明的一點是儘管測試了這些情況,但是完全不用記住它們,因為在

treeset

hashset treemap

的key hashmap

的key

中,如果想要保證**的健壯,應當讓儲存在容器中的物件為不可變物件,所以下面這些情況不應該出現在程式中。

首先定義address類,就是根據detail 來判斷相等

package com.whrd.test;

public class address implements comparable

public void setdetail(string detail)

public address(string detail)

@override

public int compareto(object o)

@override

public string tostring()

}

然後是測試程式:

public static void main(string args)

AJPFX關於TreeSet集合的介紹

需求 鍵盤錄入5個學生資訊 姓名,語文成績,數學成績,英語成績 按照總分從高到低輸出到控制台。分析 1 建立鍵盤錄入物件 2 建立treeset集合,使用匿名內部類實現comparator介面,重寫compara方法 3 判斷集合中元素的個數,向其中新增元素 4 遍歷集合 class demo tr...

關於 0x3f3f3f3f 的問題

0x3f3f3f3f是乙個很有用的數值,它是滿足以下兩個條件的最大整數。1 整數的兩倍不超過 0x7f7f7f7f,即int能表示的最大正整數。2 整數的每8位 每個位元組 都是相同的。我們在程式設計中經常需要使用 memset a,val,sizeof a 初始化乙個陣列a,該語句把數值 val ...

用JS改變的元素CSS樣式

css樣式的引用有3種方式 style引用 class引用 id引用,所以js改變元素的樣式我們也分3種來說。1.js改變由style方式引用的樣式 方法一 document.divs.style.csstext border 1px solid 000000 color ff0000 方法二 do...