1

我有一个类,它的成员是byte[]我需要把类的TreeMap对象key作为这个类的对象。以下是我写的,但put没有get按预期工作。

import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Arrays;    

public class XTObject Comparable<XTObject>{
    public byte[] data; 
    public XTObject(){

    }
    public XTObject(final byte[] in) {
        this.data = in;
    }   


    @Override
  public boolean equals(final Object obj) {
        if (this == obj)
      return true;
   if (obj == null)
      return false;
   if (getClass() != obj.getClass())
      return false;
   XTObject other = (XTObject) obj;
   if (!Arrays.equals(data, other.data))
      return false;
   return true;
    }
    @Override
  public int hashCode() {
        return Arrays.hashCode(data);       
    }
    @Override
    public int compareTo(XTObject o) {
        ByteBuffer left = ByteBuffer.wrap(this.data);
        ByteBuffer right = ByteBuffer.wrap(o.data);
        return left.compareTo(right);

    }

}

我猜 Put 工作正常,但get给出了空指针异常。我是java新手。

4

1 回答 1

2

您应该确保data在构造过程中始终初始化该成员,或者确保您处理潜在的空值。
如果数据成员未初始化,您将NullPointerExecptionequals,hashCodecompareTo方法中暴露。
TreeMap是一个SortedMap 将使用 compareTo 方法对地图元素进行排序。

于 2013-03-19T07:42:49.217 回答