2011-12-09 2 views
0

Je déclare un tableau de chaînes comme:compte de longueur String []

String[] items = new String[10]; 
items[0] = "item1"; 
items[1] = "item2"; 

Comment puis-je trouver la longueur des articles d'une manière efficace qu'il ne contient que deux éléments. items.length renvoie 10.

Je cours déjà une boucle qui court à sa longueur. Je veux donc quelque chose avec ce code sans ajouter de nouveau code/boucle pour compter le nombre d'éléments non null. Que puis-je remplacer par items.length

for (int i = 0; i < items.length; i++) { 
... 
} 

Répondre

8

Non Vous aurez besoin de boucle et voir le nombre d'éléments non null il y a.

Envisagez d'utiliser par ex. un ArrayList<String> au lieu d'un tableau brut.

MISE À JOUR

Pour répondre à la nouvelle partie de votre question, votre boucle peut devenir:

for (int i = 0; (i < items.length) && (items[i] != null); i++) { 
    ... 
} 
+0

question modifiée –

+0

@imrantariq: La réponse d'Oli est toujours pertinente pour la deuxième partie de votre question. – AusCBloke

+0

@imran: Voir ma mise à jour. –

1

Il est 10 déjà, il est juste que 8 de l'objet sont définies sur null si vous pourrait faire à la suite

int count = 0 ; 
if(items!=null){ 
    for(String str : items){ 
    if(str != null){ 
     count ++; 
    } 
    } 
} 
+0

question modifiée –

+0

non, il n'y a pas de null. Arrey utilise l'espace mémoire non effacé. Vous devez définir des zéros là si vous voulez les trouver là. –

+0

@El ': Ce n'est pas correct. –

2

Pourquoi ne pas utiliser une collection:

Vector <String> items; 
items.add("item1"); 
items.add("item2"); 

int length = items.size(); 
+0

question modifiée –

0

Vous devez parcourir et vérifier null. comte

int count = 0; 
for(int i = 0; i < items.length; i++){ 
if(items[i] != null){ 
    count++; 
    } 
} 

donnera le nombre d'éléments occupés

+0

question modifiée –

+0

@EI pouvez-vous essayer 'String [] éléments = new String [10];' et imprimer tous les éléments dans le tableau. Vous verrez null. Alors pourquoi dites-vous qu'il n'y a pas de null! –

0

Avec la question modifiée à l'esprit, vous pouvez absolument rien faire. Il n'y a pas d'attribut vous donnant le nombre d'éléments non null, donc soit vous prenez une autre collection ou vous vérifiez chaque valeur pour null.

0

Je pense peut que cela aidera u

public class T1 { 
    public static void main(String[] args) { 
     String[] items = new String[10]; 
     items[0] = "item1"; 
     items[1] = "item2";  
     System.out.println(getActualSize(items)); 

    } 

    public static int getActualSize(String[] items) 
    { 
     int size=0; 
     for(int i=0;i<items.length;i++) 
     { 

      if(items[i]!=null) 
      { 
       size=size+1; 
      } 
     } 
     return size; 

    } 
} 
0

Pour un certain nombre de tous les éléments non-nuls dans tableau/collection (qui ne sont pas neccesary au début du tableau), vous pouvez utiliser élégante solution guava: Iterables.size(Iterables.filter(items, Predicates.notNull())).

Questions connexes