2012-02-13 17 views
47

मेरे पास एक ArrayList है जिसमें पता ऑब्जेक्ट्स हैं।प्रिंट ArrayList

मैं इस ऐरेलिस्ट के मानों को कैसे प्रिंट करूं, जिसका अर्थ है कि मैं इस मामले की संख्या में ऐरे की सामग्री को प्रिंट कर रहा हूं।

मैं केवल यह पता इस कोड के साथ सरणी की वास्तविक स्मृति पता मुद्रित करने के लिए प्राप्त कर सकते हैं:

for(int i = 0; i < houseAddress.size(); i++) { 
    System.out.print(houseAddress.get(i)); 
} 
+0

आप addres चाहते हैं स्मृति में स्थान? –

+0

क्षमा करें, मुझे समझ में नहीं आता कि आपका क्या मतलब है। सरणी सूची सरणी को इंगित करने वाले पते को संग्रहीत कर रही है, और मैं सरणी की सामग्री मुद्रित करना चाहता हूं, लेकिन मुझे नहीं पता कि इसके बारे में कैसे जाना है। – dancooper93

+0

मैंने इसे स्पष्ट करने के लिए प्रश्न को दोबारा करने की कोशिश की। –

उत्तर

5

आप कह रहे हैं कि ArrayList सरणियों के पते भंडारण है, क्योंकि यह है कि क्या toString कॉल से लौट रहे है , या क्योंकि वास्तव में आप क्या स्टोर कर रहे हैं?

यदि आपके पास सरणियों के एक ArrayList (जैसे

int[] arr = {1, 2, 3}; 
houseAddress.add(arr); 

तब सरणी मूल्यों आप Arrays.deepToString कॉल करने की आवश्यकता मुद्रित करने के लिए:

for (int i = 0; i < houseAddress.size(); i++) { 
    System.out.println(Arrays.deepToString(houseAddress.get(i))); 
} 
8

जब से तुम toString() के लिए एक कस्टम कार्यान्वयन प्रदान नहीं किया है विधि उस डिफ़ॉल्ट पर कॉल करती है जिस पर उस ऑब्जेक्ट के लिए स्मृति में पता मुद्रित करने जा रहा है

समाधान अपनी पता कक्षा में अब toString() विधि इस

public class Address { 

int addressNo ; 
.... 
.... 
... 

protected String toString(){ 
    return Integer.toString(addressNo); 
} 

तरह ओवरराइड जब आप कॉल

houseAddress.get(i) in the `System.out.print()` method like this 

System.out.print(houseAddress.get(i))Address वस्तु की toString()

12

बुलाया जाएगा toString() विधि में जोड़े आपके address कक्षा फिर

System.out.println(Arrays.toString(houseAddress)); 
+34

में ऐरे का नाम होने के साथ ही यह केवल एक सरणी के लिए काम करेगा, सरणी सूची नहीं। आप 'arrays.toString()' के लिए तर्क के रूप में 'houseAddress' प्रदान नहीं कर सकते हैं क्योंकि यह प्रकार ऐरे नहीं है। – beckah

+0

मेरी राय में लूपिंग केवल संभावित तरीका है, अगर कोई बेहतर विकल्प जानता है तो कृपया साझा करें। – geniushkg

2

कोष्ठक के अंदर houseAddress.get (i) रखो और फोन .toString() फ़ंक्शन: यानी कृपया नीचे देखें

for(int i = 0; i < houseAddress.size(); i++) {System.out.print((houseAddress.get(i)).toString()); 
} 
+2

आप किस तरह के कोड सम्मेलन का पालन करते हैं? – Lobato

+0

@ श्रीगोस मुझे आपका प्रश्न बिल्कुल स्पष्ट नहीं मिला, आपका क्या मतलब है? – 21stking

4
public void printList(ArrayList<Address> list){ 
    for(Address elem : list){ 
     System.out.println(elem+" "); 
    } 
} 
+0

यह ओपीएस वर्तमान कोड से अलग नहीं है। समस्या बनी हुई है। – Tom

3

आप बस के रूप में यह दे सकते हैं:

System.out.println("Address:" +houseAddress); 

आपका आउटपुट [address1, address2, address3]

ऐसा लगता है क्योंकि क्लास ArrayList या इसके superclass एक toString() समारोह ओवरराइड होगा।

उम्मीद है कि इससे मदद मिलती है।

System.out.println(houseAddress.toString().replaceAll("\\[\\]", "")); 
1

मुझे यकीन है कि अगर मैं पतों की धारणा (मैं यहाँ houseAddress संभालने हूँ), लेकिन एक ArrayList मुद्रित करने के लिए आप देख रहे हैं जिस तरह से करने के लिए, ये रहा समझा नहीं कर रहा हूँ यह मैं करने में मदद मिली:

System.out.println(Arrays.toString(codeLangArray.toArray())); 
54
Arrays.toString(list.toArray()) 
+0

वही आउटपुट System.out.println (सूची) द्वारा प्रिंट किया गया है; – Asha

+0

सूची घर है यहां एड्रेस: ​​'Arrays.toString (houseAddress.toArray()) ' – Beginner

1

जावा 8 के बाद से, आप से foreach() विधि का उपयोग कर सकते हैं Iterable इंटरफ़ेस।
यह एक डिफ़ॉल्ट विधि है। एक तर्क के रूप में, यह कक्षा का एक वस्तु लेता है, जो कार्यात्मक इंटरफ़ेस उपभोक्ता लागू करता है। आप तीन तरीकों से स्थानीय स्तर पर उपभोक्ता को लागू कर सकते हैं:

houseAddress.forEach(new Consumer<String>() { 
    @Override 
    public void accept(String s) { 
     System.out.println(s); 
    } 
}); 

लैम्ब्डा अभिव्यक्ति:

annonymous वर्ग साथ

houseAddress.forEach(s -> System.out.println(s)); 

या विधि संदर्भ का उपयोग करके:

houseAddress.forEach(System.out::print); 

प्रिंटिंग का यह तरीका Iterable इंटरफ़ेस के सभी कार्यान्वयन के लिए काम करता है।
उनमें से सभी, आपको यह परिभाषित करने का तरीका देते हैं कि तत्वों को कैसे मुद्रित किया जाएगा, जबकि toString() एक प्रारूप में मुद्रण सूची लागू करता है।

6
मैं क्या समझते हैं कि आप सरणियों के एक ArrayList और एक ही तरीका है प्रदर्शित करने के लिए मुद्रित करने के लिए कोशिश कर रहे हैं से

कि होगा

System.out.println(Arrays.deepToString(list.toArray())); 
0

आप एक इटरेटर उपयोग कर सकते हैं। यहां पर करने के लिए यह सबसे सरल और कम से कम controvercial चीज है। houseAddress डेटा प्रकार के मूल्यों है कहो String

Iterator<String> iterator = houseAddress.iterator(); 
    while (iterator.hasNext()) { 
    out.println(iterator.next()); 
    } 

ध्यान दें: आप के रूप में भी एक और उत्तर

+0

पेज। यह कम से कम controvercial है क्योंकि आप यहां पर कोई अनावश्यक रूपांतरण नहीं कर रहे हैं जैसे ArrayList को ऐरे में परिवर्तित करना और फिर इसे प्रिंट करने के लिए इसे स्ट्रिंग में परिवर्तित करना –

0

तुम भी उपयोग कर सकते हैं में मेरे द्वारा उल्लेख किया इस के लिए पाश के लिए एक बेहतर एक या पाश के लिए बढ़ाया पुनरावर्तक की तरह उपयोग कर सकते हैं

for (String name : houseAddress) { 
out.println(name); 
} 

आप जो कुछ भी डेटा प्रकार houseAddress है के लिए इसे बदल सकते हैं और यह unnecesarry रूपांतरण से बचा जाता है

+0

अगर आप कुछ याद करते हैं तो अपना जवाब संपादित करने के लिए स्वतंत्र महसूस करें। टिप्पणियों में निरंतर चर्चा करना बेहतर है –