2013-03-19 65 views
1

我有班級其成員是byte[]我需要把班級的對象TreeMapkey作爲這個班的對象。以下是我寫的,但putget不按預期工作。樹形圖和字節[]

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); 

    } 

} 

認沽工作正常我猜,但get正在給空指針異常。我是新來的Java。

+1

代碼放在哪裏? – 2013-03-19 07:40:00

+0

也許這是因爲如果使用無參數構造函數,則不會初始化字段'data',因此data == null – dantuch 2013-03-19 07:40:45

+0

您如何使用樹形圖? – Gothmog 2013-03-19 07:41:48

回答

2

您應確保data成員始終在構建過程中初始化,或者您處理潛在的空值。
在病例數據成員未在equalshashCodecompareTo方法初始化你有機會接觸到NullPointerExecption
TreeMapSortedMap,並將使用compareTo方法對地圖元素進行排序。