2017-07-14 1 views
2

Nous venons de recevoir un rapport d'accident que je ne comprends pas honnêtement, et je suis Je ne sais même pas si c'est une bonne question en tant que telle ... mais je ne vois rien.HTC M8 (6.0.1): TreeSet <Long> .contains (Long) throws exception de cast de la classe: "ne peut pas lancer Double à Long"

J'ai le code suivant:

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

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

Si la ligne return ids.contains(id) se bloque à l'exception suivante:

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) 

Le Long que je reçois ici est d'un 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<>(); 

Outre le remplacement de la TreeSet avec un HashSet et en utilisant Collections.sort() où je besoin, ce qui pourrait être la cause et comment dois-je éviter dans l'avenir?

EDIT:

image de valeurs dans leisureEventSelectedCategories après avoir sélectionné tous les éléments qui viennent du serveur:

LeisureEventSelectedCategories values

image de valeurs dans eventCategoryNameToPlaceId

eventCategoryNameToEventId values

+0

pas possible avec ce code ... montrez-nous plutôt comment appelez-vous la méthode *** contains *** –

+0

J'ai montré comment j'appelle la méthode 'contains' ... et je sais que ça ne devrait pas être possible, mais j'ai obtenu un rapport d'accident avec cette exception>.> Je vais remplacer le 'TreeSet ' avec un 'LinkedHashSet ' comme correctif immédiat – EpicPandaForce

+1

Btw Je ne pouvais pas produire ce crash sur un appareil Samsung ni mon Nexus 5X. – EpicPandaForce

Répondre

0

En l'e ND, nous venons de le remplacer par LinkedHashSet<Long> et le crash est parti.