2017-07-14 83 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>代替它,并且崩溃消失了。