3 votes

Arrays.asList().contains() donne un résultat erroné

Code :

private static final int[] GOOGLE_DIRECTION_ID_FOR_MATCH = { 11, 12, 13,
            14, 15 };
Log.e(TAG, "index : "
                        + Arrays.asList(GOOGLE_DIRECTION_ID_FOR_MATCH).indexOf(11));

Log.e(TAG, "contains : "
                        + Arrays.asList(GOOGLE_DIRECTION_ID_FOR_MATCH)
                                .contains(11));

Logs des déclarations ci-dessus :

index : -1
contains : false

J'ai essayé pour toutes les autres valeurs aussi.

12voto

Maroun Maroun Points 31217

Tableaux#asList renvoie un genérico type.

Une solution consiste à changer votre tableau en Integer au lieu de int :

private static final Integer[] GOOGLE_DIRECTION_ID_FOR_MATCH = { 11, 12, 13,
            14, 15 };

Voir ceci lien très utile J'ai trouvé.


Tableaux#asList renvoie à List<int[]> et non List<Integer> (Ce que vous vouliez - Rappelez-vous qu'il n'y a pas de telle chose List<int> ).

En outre, il est bon de mentionner que si une int est mis en boîte pour Integer alors soyez prudent Parce que par exemple : Integer(11) != 11 .

7voto

Evgeniy Dorofeev Points 52031

Arrays.asList para int[] arg crée un List<int[]> avec un seul élément. C'est pourquoi les contenus ne fonctionnent pas

0voto

Vous devez utiliser comme suit

   Integer[] GOOGLE_DIRECTION_ID_FOR_MATCH = { 11, 12, 13,14, 15 };
   System.out.println((Arrays.asList(GOOGLE_DIRECTION_ID_FOR_MATCH)).indexOf(11));
   System.out.println((Arrays.asList(GOOGLE_DIRECTION_ID_FOR_MATCH)).contains(11));

Puisque nous sommes définis List<Integer> cette réflexion sur l'objet

0voto

Geralt_Encore Points 2908

Vous avez besoin :

Arrays.asList(11, 12, 13, 14, 15)

0voto

Abra Points 2316

Une solution qui utilise le API de flux qui a été introduit dans Java 8.

List<Integer> list = Arrays.stream(GOOGLE_DIRECTION_ID_FOR_MATCH)
                           .boxed()
                           .collect(Collectors.toList());
System.out.println("index: " + list.indexOf(11));
System.out.println("contains: " + list.contains(11));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X