亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么是具有獨特元素(如set)和get element功能的正確Java集合

什么是具有獨特元素(如set)和get element功能的正確Java集合

qq_遁去的一_1 2021-04-03 15:11:34
我使用JavaHashSet存儲唯一元素,但現在我想檢索元素,但HashSet沒有類似的東西,這是我想要解決的問題:對于我的用例LinkInfohashCode()和equals()方法不使用LinkInfo.id字段,我想從set中獲取linkinfo實例并更新其所有字段,但id字段應該來自舊實例Set<LinkInfo> fooSet = new HashSet<>()public void updateFoo(LinkInfo linkInfo) {    LinkInfo temp = fooSet.get(linkInfo);    linkInfo.setId(temp.getId());    // now update set    fooSet.remove(linkInfo)    fooSet.add(linkInfo)    }
查看完整描述

3 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

而不是


LinkInfo temp = fooSet.get(linkInfo);

以下邏輯與您似乎想要的相同


if (fooSet.contains(linkInfo)) {

   temp = linkInfo;

}


查看完整回答
反對 回復 2021-04-18
?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

您在這里有一個邏輯上的問題。為什么要依賴的APIequals()提供一種方法getElementEqualTo(e)?為了使用這種方法,您需要提供一個對象,該對象出于API的目的,等同于所需的結果。那有什么意義呢?


但這并不意味著您不走運。我想您是在說您的LinkInfo類提供了一些方法hashCode(),這些equals()方法適合通過可以獲取的另一個對象來標識所需的對象。在這種情況下,聽起來好像HashMap可以達到您的目的。只需將每個鍵映射到自身即可。


HashMap<LinkInfo, LinkInfo> infos;


public void updateInfo(LinkInfo linkInfo) {

    LinkInfo temp = infos.remove(linkInfo);


    if (temp != null) {

        linkInfo.setId(temp.getId());

    }


    infos.put(linkInfo, linkInfo);


查看完整回答
反對 回復 2021-04-18
  • 3 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號