Fondamentalement, mon compagnon a dit que je pourrais raccourcir mon code en utilisant une manière différente de vérifier si un tableau int contient un int, bien qu'il ne me dise pas ce que c'est: P.
Actuel:
public boolean contains(final int[] array, final int key) {
for (final int i : array) {
if (i == key) {
return true;
}
}
return false;
}
J'ai également essayé cela, bien que cela renvoie toujours faux pour une raison quelconque.
public boolean contains(final int[] array, final int key) {
return Arrays.asList(array).contains(key);
}
Quelqu'un pourrait m'aider?
Je vous remercie.
Hashset
réponse du mécanisme de réexamen. C'est le moyen le plus rapide.ArrayList
la mise en œuvre fait de même.Réponses:
Voici la solution Java 8
la source
Vous pouvez simplement utiliser
ArrayUtils.contains
deApache Commons Lang library
.la source
ArrayUtils.contains()
fait partie de laApache Commons Lang
bibliothèque. Même si c'est une excellente bibliothèque, ce n'est probablement pas une bonne idée d'ajouter une dépendance externe juste pour vérifier si le tableau contient un élément: DC'est parce que
Arrays.asList(array)
revenirList<int[]>
.array
L'argument est traité comme une valeur que vous souhaitez encapsuler (vous obtenez une liste de tableaux d'entiers), et non comme vararg.Notez qu'il ne travail avec les types d'objet (pas primitives):
ou même:
Mais vous ne pouvez pas l'avoir
List<int>
et la boxe automatique ne fonctionne pas ici.la source
Guava propose des méthodes supplémentaires pour les types primitifs. Parmi eux, une méthode contient qui prend les mêmes arguments que le vôtre.
Vous pouvez également importer statiquement la version goyave.
Voir les primitives de goyave expliquées
la source
Une manière différente:
Cela modifie le tableau transmis. Vous auriez la possibilité de copier le tableau et de travailler sur le tableau d'origine, c'est-à-dire
int[] sorted = array.clone();
mais ce n'est qu'un exemple de code court. Le runtime est
O(NlogN)
pendant que votre chemin estO(N)
la source
contains
méthode modifiait mon tableau.-1
si cela a l'intention d'être vrai. "Le point d'insertion est défini comme le point auquel la clé serait insérée dans la liste: l'index du premier élément supérieur à la clé, ou list.size () si tous les éléments de la liste sont inférieurs à la clé spécifiée. ". Besoin de dire>= 0
.Je sais qu'il est super tard, mais essayez à la
Integer[]
placeint[]
.la source
1. utilisations ponctuelles
2. utilisez HashSet pour des considérations de performances si vous en utilisez plusieurs fois.
la source
Essaye ça:
la source
Vous pouvez convertir votre tableau int primitif en un tableau d'entiers en utilisant le code Java 8 ci-dessous,
Et puis utilisez la
contains()
méthode pour vérifier si la liste contient un élément particulier,la source
cela a fonctionné en java 8
la source
Vous pouvez utiliser la
java.util.Arrays
classe pour transformer le tableauT[?]
en unList<T>
objet avec des méthodes telles quecontains
:la source
Selon la taille de votre tableau d'entiers, vous obtiendrez de bien meilleures performances si vous utilisez des collections et
.contains
plutôt que d'itérer sur le tableau un élément à la fois:la source
Solution n ° 1
Étant donné que la question d'origine ne veut qu'une solution simplifiée (et non plus rapide), voici une solution en une ligne:
Explication: Javadoc d'
Arrays.toString()
états, le résultat est placé entre crochets et les éléments adjacents sont séparés par les caractères "," (une virgule suivie d'un espace). Nous pouvons donc compter sur cela. Nous convertissonsarray
d'abord en une chaîne, puis nous vérifions si ellekey
est contenue dans cette chaîne. Bien sûr, nous ne pouvons pas accepter les "sous-nombres" (par exemple "1234" contient "23"), nous devons donc rechercher des modèles où lekey
est précédé d'un crochet ouvrant ou d'un espace, et suivi d'un crochet fermant ou d'une virgule.Remarque: Le modèle d'expression régulière utilisé gère également correctement les nombres négatifs (dont la représentation sous forme de chaîne commence par un signe moins).
Solution n ° 2
Cette solution est déjà publiée mais elle contient des erreurs, je poste donc la bonne solution:
Cette solution a également un effet secondaire: elle modifie le
array
(le trie).la source
Essayez
Integer.parseInt()
de faire ceci .....la source