htc m8(6.0.1):treeset< long>.contains(long)抛出类转换异常:“cannot cast double to long”

tzxcd3kk  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(377)

我们刚收到一份车祸报告,我真的不明白,我甚至不确定这是否是个好问题。。。但我什么都想不出来。
我有以下代码:

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<>();

除了更换 TreeSet 用一个 HashSet 以及使用 Collections.sort() 在我需要的地方,是什么导致了这种情况,我应该如何避免它在未来?
编辑:
价值观念 leisureEventSelectedCategories 选择来自服务器的所有项目后:

价值观念 eventCategoryNameToPlaceId

xzv2uavs

xzv2uavs1#

最后,我们用 LinkedHashSet<Long> 飞机坠毁了。

相关问题