2017-07-14 63 views
2

我們剛收到一個崩潰報告,我真的不明白,我甚至不知道這是一個好問題......但我什麼也想不起。宏達M8(6.0.1):TreeSet <Long>。包含(長)拋出類拋出異常:「不能拋出雙倍到長」

我有以下代碼:

public class LeisureEventSelectedCategories { 
    private Set<Long> ids = new TreeSet<>(); 

    public boolean contains(Long id) { 
     if (id == null) { 
      return false; 
     } 
     return ids.contains(id); 
    } 

凡行return ids.contains(id)崩潰,並顯示以下異常:

java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Long 
    at java.lang.Long.compareTo(Long.java) 
    at java.util.TreeMap.find(TreeMap.java) 
    at java.util.TreeMap.findByObject(TreeMap.java) 
    at java.util.TreeMap.containsKey(TreeMap.java) 
    at java.util.TreeSet.contains(TreeSet.java) 
    at com.acme.b.a.d.a(LeisureEventSelectedCategories.java:50) 

我收到這裏的Long是從Map<String, Long>

leisureEventSelectedCategories.contains(eventCategoryNameToEventId.get(categoryName)) || leisurePlaceSelectedCategories.contains(placeCategoryNameToPlaceId.get(categoryName)), 

Map<String, Long> placeCategoryNameToPlaceId = new LinkedHashMap<>(); 
Map<String, Long> eventCategoryNameToEventId = new LinkedHashMap<>(); 

除了用HashSet更換TreeSet和使用Collections.sort()我需要它,這可能是造成這一點,我應該如何避免它的未來?

編輯:值的leisureEventSelectedCategories

圖像選擇的是來自服務器的所有項目後:值

LeisureEventSelectedCategories values

圖像中eventCategoryNameToPlaceId

eventCategoryNameToEventId values

+0

不可能與該代碼...顯示我們,而不是如何調用***包含***方法 –

+0

我確實顯示瞭如何調用'contains'方法...我知道它不應該是可能的,但我得到了一個崩潰報告,這個例外>>我要用'LinkedHashSet '代替'TreeSet '作爲即時錯誤修復 – EpicPandaForce

+1

順便說一下,我無法在三星設備上產生這個崩潰,我的Nexus 5X。 – EpicPandaForce

回答

0

在e nd,我們用LinkedHashSet<Long>代替它,並且崩潰消失了。