猿问

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

我使用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)


    }


qq_遁去的一_1
浏览 168回答 3
3回答

狐的传说

而不是LinkInfo temp = fooSet.get(linkInfo);以下逻辑与您似乎想要的相同if (fooSet.contains(linkInfo)) {&nbsp; &nbsp;temp = linkInfo;}

30秒到达战场

您在这里有一个逻辑上的问题。为什么要依赖的APIequals()提供一种方法getElementEqualTo(e)?为了使用这种方法,您需要提供一个对象,该对象出于API的目的,等同于所需的结果。那有什么意义呢?但这并不意味着您不走运。我想您是在说您的LinkInfo类提供了一些方法hashCode(),这些equals()方法适合通过可以获取的另一个对象来标识所需的对象。在这种情况下,听起来好像HashMap可以达到您的目的。只需将每个键映射到自身即可。HashMap<LinkInfo, LinkInfo> infos;public void updateInfo(LinkInfo linkInfo) {&nbsp; &nbsp; LinkInfo temp = infos.remove(linkInfo);&nbsp; &nbsp; if (temp != null) {&nbsp; &nbsp; &nbsp; &nbsp; linkInfo.setId(temp.getId());&nbsp; &nbsp; }&nbsp; &nbsp; infos.put(linkInfo, linkInfo);}&nbsp;
随时随地看视频慕课网APP

相关分类

Java
我要回答