Accéder aux sous-tableau de comptage et d'un élément dans les tableaux en Java
J'ai 2 questions au sujet de tableaux dans java
et toute aide serait appréciée.
- Est-il un moyen de accès un sous-tableau (quelque chose comme ça sur
python: array[1:5]
) - Je veux savoir ne
java
a une fonction qui compte un élément spécifique dans unearray
ou pas.
Je ne veux pas utiliser les boucles for.
Pourquoi vous ne souhaitez pas utiliser de boucles? Même si une méthode existe en Java, il faudra de la boucle interne.
Je veux éviter de longues ordre du temps. Je ne suis pas sûr que de telles fonctions réellement utiliser une boucle interne.
Si vous vous attendez à quelque chose de comparer chaque élément dans le tableau de longueur N, mais en temps constant? Comment vous vous attendriez à ce que le travail?
Qu'entendez-vous par "compte un élément spécifique dans une table" ?
Amen - si vous avez besoin rapide (plus rapide que linéaire en temps des recherches, utiliser un HashSet ou un TreeSet.
Je veux éviter de longues ordre du temps. Je ne suis pas sûr que de telles fonctions réellement utiliser une boucle interne.
Si vous vous attendez à quelque chose de comparer chaque élément dans le tableau de longueur N, mais en temps constant? Comment vous vous attendriez à ce que le travail?
Qu'entendez-vous par "compte un élément spécifique dans une table" ?
Amen - si vous avez besoin rapide (plus rapide que linéaire en temps des recherches, utiliser un HashSet ou un TreeSet.
OriginalL'auteur Amen | 2013-12-27
Vous devez vous connecter pour publier un commentaire.
Pour votre première question, vous pouvez utiliser
copyOfRange
méthode statique deArrays
classe.Exemple d'utilisation:
Et pour votre deuxième question, qui est de la méthode est de parcourir tout le tableau et qui ne peut être fait sans une boucle.
subArray = [2, 3, 4]
??Non,
subArray
comprendra 2 et 3, carArrays.copyOfRange
de la méthodefrom
paramètre est inclusif et queto
paramètre est exclusif. Ainsi, lorsque vous fournissent 1 et 3 en tant que paramètres, vous dire méthode retourne un nouveau tableau à partir de l'indice 1 à 2 (ne pas inclure 3ème indice). Référence: docs.oracle.com/javase/7/docs/api/java/util/...OriginalL'auteur Mehmet Sedat Güngör
Pour accéder à une partie d'un tableau, vous pouvez utiliser
Arrays.asList
pour obtenir unList<E>
, et ensuite utiliser lesubList
méthode pour obtenir une tranche:De sortie:
Pour votre deuxième question: même si une telle méthode existe, il faudrait qu'il la boucle. Je ne suis pas au courant d'une telle méthode dans les bibliothèques standard, donc je vous suggère d'écrire votre propre en utilisant une boucle.
OriginalL'auteur Jon Skeet
La Java 8 façon de le faire sera:
Arrays.stream(array, 1, 5)
Arrays.stream(array).filter(x -> x == element).count()
où
array
est votre entréeint[]
etelement
est l'entier de l'élément à être comptéExplication:
Arrays.stream(array, 1, 5)
vous renvoieStream
objet contenant des éléments présents dans learray
à partir de l'indice 1 à 4. QueStream
peuvent encore être converties àint[]
si besoin à l'aide detoArray()
ou peut être directement utilisé si certaines fonction d'agrégation est requis sur elle commemin()
Arrays.stream(array).filter(x -> x == element).count()
va d'abord convertir la donnéearray
àStream
et ensuite appliquer lafilter()
filtrage hors tout élément qui ne correspond pas à la condition booléenne spécifiée, puis sera de retour lecount()
de l'filtré dans élément.Remarque: Cette ou de toute autre méthode pour compter le nombre d'occurrences d'un élément dans un tableau en interne ont pour boucle si les éléments.
OriginalL'auteur Vikas Prasad