java – 如何将第三方类对象用作Hashmap键?

前端之家收集整理的这篇文章主要介绍了java – 如何将第三方类对象用作Hashmap键?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
好的,我理解equals和hashcode的工作原理以及它们在hashmap中的使用方式.
但是这个问题在我脑海中浮现,如果我有一个没有覆盖哈希码和等号的第三方对象,我甚至不允许修改它.

考虑以下课程:

//Unmodifiable class
public final class WannaBeKey{

    private String id;

    private String keyName;

    //Can be many more fields

    public String getId()
    {
          return id;
    }

    public String getKeyName()
    {
          return id;
    }
    //no hashcode or equals :(

  }

现在我想把这个类作为我的Hashmap键,显然它不会没有equals和hashcode.我想知道有没有办法处理这种情况?我无法想到任何我想到的事情.

谢谢.

解决方法

我之前遇到过这种情况,并通过为WannaBeKey创建一个包装器来解决这个问题:
public class WannaBeKeyWrapper {

  private final WannaBeKey key;


  public WannaBeKeyWrapper(WannaBeKey key) {
    this.key = key;
  } 

  public boolean equals(Object obj) {

    // Insert equality based on WannaBeKey
  }

  public int hashCode() {
    // Insert custom hashcode in accordance with http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode()
  }
}

显然这会改变你的Set来自Set< WannaBeKey>设置< WannaBeKeyWrapper>,但你应该能够解释它.

原文链接:https://www.f2er.com/java/126632.html

猜你在找的Java相关文章