2010-09-13 20 views
44

मैं अपनी सरणी में आइटम आईडी की संख्या गिनना चाहता हूं, क्या मुझे यह उदाहरण मिल सकता है कि मैं इसे अपने कोड में जोड़ने के बारे में कैसे जाऊंगा। नीचे कोड; ,मेरी सरणी सूची में आइटमों की संख्या की गणना करें

int itemCount = list.size(); 

हालांकि आप अद्वितीय itemIds की संख्या (गिनती करने के लिए देख रहे हैं:

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

मुझे नहीं लगता कि प्रश्न नमूना कोड के साथ अच्छी तरह से मेल खाता है। क्या आप 'विशिष्ट' आइटम आईडी या इसी तरह की संख्या की तलाश में हैं? –

उत्तर

103

अपनी सूची में itemId रों की संख्या अपनी सूची में तत्वों की संख्या के रूप में ही किया जाएगा प्रति @pst) तो आपको उनका ट्रैक रखने के लिए एक सेट का उपयोग करना चाहिए।

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

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

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

अपने पाश के बाहर एक पूर्णांक बनाने के लिए:

int numberOfItemIds = 0; 
for (int i = 0; i < key.length; i++) { 
फिर पाश में

, यह भी वृद्धि:

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

डॉन। मुझे लगता है कि मार्क पीटर्स ने ऐसा करने से पहले एक बेहतर समाधान पोस्ट किया था। – Freiheit

+0

हाँ, आपके पास पहले से मूल सरणी की लंबाई होने पर प्रत्येक चरण को लूप के माध्यम से गिनने का प्रयास करने का अर्थ नहीं है। – StriplingWarrior

0

केवल एक चीज मैं मार्क पीटर्स समाधान करने के लिए जोड़ है कि आप है ArrayList पर पुन: प्रयास करने की आवश्यकता नहीं है - आप सेट पर addAll (संग्रह) विधि का उपयोग करने में सक्षम होना चाहिए। संक्षेप में आपको केवल पूरी सूची में फिर से शुरू करने की आवश्यकता है।

+0

सूची में 'Propertyunbuf' ऑब्जेक्ट्स हैं जबकि वांछित सेट में स्ट्रिंग्स हैं। आप addAll का उपयोग एक से दूसरे तक नहीं कर सकते ... आपको ऐसा करने के लिए Google संग्रह के परिवर्तन की तरह कुछ चाहिए। –

+0

अच्छा बिंदु। हालांकि मेरा मानना ​​है कि अगर Propertyunbuf ऑब्जेक्ट की बराबर() विधि आइटम का उपयोग करती है, तो आप प्रॉपर्टीनबफ के संग्रह के रूप में अपना सेट घोषित कर सकते हैं और एक ही शुद्ध परिणाम प्राप्त कर सकते हैं। फिर भी मैं आपके दृष्टिकोण को बेहतर पसंद करता हूं - मुझे विकल्प और विकल्प तलाशना पसंद है :) – BigMac66

12

आप अपनी सरणी में आइटम आईडी की संख्या गिनना चाहते हैं। बस उपयोग करें:

int counter=list.size(); 

कम कोड दक्षता बढ़ता है। पूर्वजों के पहिये को न चलाएं ...

संबंधित मुद्दे