2010-09-13 14 views
44

Chcę policzyć liczbę itemids w mojej tablicy, czy mogę uzyskać przykład, w jaki sposób chciałbym dodać o dodaniu tego do mojego kodu. kod poniżej;Policz liczbę pozycji w mojej tablicy tablicowej

if (value != null && !value.isEmpty()) { 
    Set set = value.keySet(); 
    Object[] key = set.toArray(); 
    Arrays.sort(key); 

    for (int i = 0; i < key.length; i++) { 
     ArrayList list = (ArrayList) value.get((String) key[i]); 

     if (list != null && !list.isEmpty()) { 
      Iterator iter = list.iterator(); 
      double itemValue = 0; 
      String itemId = ""; 

      while (iter.hasNext()) { 
       Propertyunbuf p = (Propertyunbuf) iter.next(); 
       if (p != null) { 
        itemValue = itemValue + p.getItemValue().doubleValue(); 
        itemId = p.getItemId(); 
       } 

       buf2.append(NL); 
       buf2.append("     " + itemId); 

      } 

      double amount = itemValue; 
      totalAmount += amount; 
     } 
    } 
} 
+5

Nie sądzę, aby pytanie dobrze pasowało do przykładowego kodu. Szukasz liczby "różnych" itemIds lub podobnych? –

Odpowiedz

103

Liczba itemId sw liście będzie taka sama jak liczba elementów w liście:

int itemCount = list.size(); 

Jednakże, jeśli szukasz policzyć liczbę unikalnych itemIds (za @ pst), powinieneś użyć zestawu do śledzenia ich.

Set<String> itemIds = new HashSet<String>(); 

//... 
itemId = p.getItemId(); 
itemIds.add(itemId); 

//... later ... 
int uniqueItemIdCount = itemIds.size(); 
2

spoza pętli utworzyć int:

int numberOfItemIds = 0; 
for (int i = 0; i < key.length; i++) { 

Następnie w pętli zwiększamy go:

itemId = p.getItemId(); 
numberOfItemIds++; 
+0

Cholera. Myślę, że Mark Peters opublikował lepsze rozwiązanie tuż przed moim. – Freiheit

+0

Tak, to nie ma sensu, aby próbować liczyć każdy krok w pętli, gdy już masz długość oryginalnej tablicy. – StriplingWarrior

0

Jedyną rzeczą, którą chciałbym dodać do roztworu Mark Peters to ty nie trzeba powtarzać w ArrayList - powinieneś być w stanie użyć metody addAll (Collection) w zestawie. Musisz tylko powtórzyć całą listę, aby dokonać podsumowań.

+0

Lista zawiera obiekty 'Propertyunbuf', podczas gdy żądany zestaw zawiera ciągi. Nie możesz używać addAll z jednego do drugiego ... aby to zrobić, potrzebujesz czegoś takiego jak transformacja Google Collection. –

+0

Dobra uwaga. Chociaż sądzę, że jeśli metoda equals() obiektu Propertyunbuf użyłaby itemId, mógłbyś zadeklarować swój zestaw jako kolekcję Propertyunbuf i uzyskać taki sam wynik netto. Wciąż lubię twoje podejście lepiej - po prostu lubię poznawać opcje i alternatywy :) – BigMac66

12

Chcesz policzyć liczbę przedmiotów w swojej tablicy. Po prostu użyj:

int counter=list.size(); 

Mniej kodu zwiększa wydajność. Nie uruchamiaj koła przodków ...

Powiązane problemy