2014-06-30 30 views

cevap

13

.... benim şüphe netleştirmek herhangi bedeni java7..can kullanıyorum ... boş TreeSet ilk kez boş kabul eder fakat NullPointerException alıyorum birçok makalelerinde okumak Java 7 eyalette documentation for TreeSet#add:

NullPointerException - belirtilen öğesi boş olup, size bu seti doğal sırası kullanılır veya boş değerler işleyebilir özel karşılaştırıcı uygulamasını belirtmediniz beri karşılaştırıcı boş öğeleri

Yani

izin vermediğinde NPE'yi al.

Düzenleme: Java 6 bir TreeSet/TreeMap ilk unsuru olarak bir null eleman eklemek mümkündür, ama kabul edildi bir bug çünkü: İlk eleman a boş bir TreeSet için

+0

İlk elemanı null olarak ekledim, böylece nesneleri karşılaştırma sorunu nerede? Benim bilgime göre TreeSet ilk öğe için karşılaştırılamaz ve ilk kez null kabul eder. – user3516780

+0

Belgeler açık ve "TreeSet # add" ve "TreeMap # put" kaynak koduna bakarsanız (TreeSet'i destekleyen), ayrıca nedenini de göreceksiniz. – NilsH

+0

Yanıtınız için teşekkür ederiz ... Dokümanları anladım ancak bu videoyu ziyaret etmekten çekinmeyin https://www.youtube.com/watch? v = 4uvdetsRq90 saat 15:30 da bakın, ayrıca null ve print değerini de ekledi. Şüphem açıklığa kavuşturabilir – user3516780

2

budur null değeri eklenebilir, ancak başka bir nesne eklemeyi deniyorsak bu ilk değeri ekledikten sonra NullPointerException alırız.

Boş olmayan bir TreeSet için, çalışma zamanında boş bir değer girmeye çalışıyorsanız, bir NullPointerException alırsınız. Bunun nedeni, bazı öğeleri ağacın içinde bulunduğunda, herhangi bir nesneyi eklemeden önce, compareTo() yöntemini kullanarak yeni nesneyi mevcut nesnelerle karşılaştırır ve yeni nesneyi nereye koyacağınıza karar verir. Yani, null ekleyerek compareTo() yöntemi, NullPointerException içten atar.

Java'nın yeni sürümünde boş eklemeye izin verilmediğini düşünüyorum.

1

API açıklama:

Özet: Bir TreeMap içine Geçersiz Eleman takma bir NPE Açıklama Atar: nedeniyle java.util.TreeMap bir hata nedeniyle, uygulamaya değil geçersiz boş öğeleri ve öğe eklemek için önce mümkün oldu Boş bir TreeMap veya TreeSet'e benzetilebilir arayüz. Boş bir TreeMap veya TreeSet'e yalnızca tek bir geçersiz öğe eklenebilir; ek öğeler beklenen NullPointerException veya ClassCastException neden olur. Koleksiyondaki diğer birçok işlem de başarısız olur. Java SE 7'den itibaren, geçersiz bir boş öğe veya boş bir TreeMap veya TreeSet'e karşılaştırılamıyor olan bir öğenin eklenmesi bir NullPointerException atar.

0

1,7'den itibaren null TreeSet tarafından kabul edilmemektedir. Eklemeye zorlarsanız, NullPointerException alırız. 1.6 değerine kadar sadece ilk öğe olarak kabul edildi.