Java में for-each लूप वास्तव में कैसे काम करता है? उदाहरणों के साथ विस्तृत व्याख्या
सभी को नमस्कार! मैंने हाल ही में Java सीखना शुरू किया है और for-each लूप का सामना किया। यह समझ में आता है: for (int x : numbers) { ... } — बस array या collection के तत्वों को iterates करता है। लेकिन जब मैंने गहराई से खोजना शुरू किया, तो कई प्रश्न उठे।
उदाहरण के लिए, मैंने यह कोड लिखा:
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
for (String s : list) {
if (s.equals("B")) {
list.remove(s); // ConcurrentModificationException!
}
}
और मुझे ConcurrentModificationException मिला। क्यों? जबकि सामान्य for (int i = 0; i < list.size(); i++) में ऐसा नहीं होता।
दूसरा उदाहरण — मैंने for-each के माध्यम से array के तत्वों को बदलने की कोशिश की:
int[] arr = {1, 2, 3};
for (int x : arr) {
x = x * 2; // काम नहीं करता! Array नहीं बदला
}
x array के तत्व को क्यों reference नहीं करता? और "हुड के नीचे" वास्तव में क्या होता है? क्या for-each किसी भी data type के साथ काम कर सकता है? compiler कैसे