HTC M8 (6.0.1):TreeSet<Long>.contains(Long) 抛出 class 强制转换异常:"cannot cast Double to Long"
HTC M8 (6.0.1): TreeSet<Long>.contains(Long) throws class cast exception: "cannot cast Double to 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
中的值图像:
eventCategoryNameToPlaceId
中值的图像
最后,我们只是将其替换为LinkedHashSet<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
中的值图像:
eventCategoryNameToPlaceId
最后,我们只是将其替换为LinkedHashSet<Long>
,崩溃就消失了。