2016-03-21 27 views
-5

exception on eclipseneden ben bir nesne

eklemek için benim PriorityQueue kullanamıyorum? Önceden ayarlanmış olan PriorityQueue

+1

Bundan daha fazlası için bize daha fazla vermeniz gerekecek. Ne denedin? – SubliemeSiem

+6

Yığın Taşması'na Hoş Geldiniz. Lütfen hem kodu hem de hatayı kendisinin ekran görüntüsünden ziyade metin olarak, bir [mcve] biçiminde sağlayın. Bu noktada, size yardımcı olmak çok kolay olabilir. –

+0

JavaDoc'tan: * "Bir öncelik sırası boş elemanlara izin vermiyor" *. İstisna, kesinlikle, bir yerde null teklif etmeyi denediğinizi söylüyor. –

cevap

1

A PriorityQueue, ona eklediğiniz öğeleri sıralamasına rağmen, "en küçük", take() numaralı telefonu aradığınızda her zaman ilk aldığınızdır.

Therefort, ön koşul, burada depoladığınız nesnelerin birbiriyle karşılaştırılabilmesidir, böylece sıra onları düzgün bir şekilde sıralayabilir. nesneler Comparable

  • uygulayabilir Yoksa onun kurucu aracılığıyla, PriorityQueue kendisine bir Comparator sağlayabilir

    • :

      Bunun için

      , 2 seçeneğiniz var.

    sağladığınız Comparatornull, yani PriorityQueue nesneler Comparable olmanın dayandığı için bir hatadır olsun sebebi - ve ben Gokhemon sınıf değil sanırım. Dolayısıyla PriorityQueue, öğelerini doğru bir şekilde sıralayamadığından şikayetçidir.

    Referans: https://docs.oracle.com/javase/8/docs/api/java/util/PriorityQueue.html

    öncelik sırası elemanları doğal düzene göre sıralı ya da yapıcı kullanıldığı bağlı olarak sıra yapı anda temin edilen bir karşılaştırıcı tarafından edilir. (...) karşılaştırılamayan nesnelerin sokulmasına izin vermez aynı zamanda doğal sipariş dayanan bir öncelik sırası görüntü NullPointerExceptionPriorityQueue.add yöntemi içinde atılır gösterir

  • 0

    (bu sayede ClassCastException neden olabilir). (Aslında iç içe bir çağrı için offer ...)

    Sorun, sıra null değil. NPE, eğer bu bir primer olsaydı, < < kodunuzda atılırdı. Sorun, sırayı bir null karşılaştırıcısıyla başlatmış olmanız değil. Bu javadoc'a göre çalışmalı.

    Asıl sorun, sıraya bir null nesnesi eklediğiniz olmasıdır. Javadoc, eğer bunu yaparsan, bir NPE alacağını söylüyor.

    İlgili konular