çıkış: NullPointerException. BenBoş NullPointerException öğesini yükseltmek için boş NullPointerException öğesinin eklenmesi NullPointerException
cevap
.... 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
İ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
Belgeler açık ve "TreeSet # add" ve "TreeMap # put" kaynak koduna bakarsanız (TreeSet'i destekleyen), ayrıca nedenini de göreceksiniz. – NilsH
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
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.
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.
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.
Niçin 'TreeSet'e 'null' eklemek istiyorsun? Ve hangi makaleler olabilir? – Eypros
Benim için kod java 1.6'da gayet iyi çalışıyor. Hangi java sürümünü kullanıyorsunuz? – Jens
java 1.7 sürümünü kullanıyorum. – user3516780