我们刚收到一份我真实不理解的崩溃报告,我甚至不确定这是一个好问题......但我可以&#39想想什么。
我有以下代码:
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
答案 0 :(得分:0)
最后,我们只用LinkedHashSet<Long>
替换它,崩溃就消失了。