0 محمد أبو عواد نشر 9 يناير 2022 أرسل تقرير نشر 9 يناير 2022 في Java يتم تمرير كل معلمة ليست من النوع البدائي (int ، long ، byte ، char ، boolean ...) كمرجع لهذا الكائن , على سبيل المثال public static void test(List<Integer> list){// أنشأت دالة تستقبل معامل والمعامل عبارة عن مرجع لكائن من نوع List ونوع العناصر التي تستقبلها القائمة هي أعداد صحيحة list.add(3);// وظيفة الدالة فقط اضافة عنصر اليها وقيمته 3 } public static void main(String[] args){ List<Integer> list1 = new LinkedList<>();//انشاء كائن من LinkedList تقبل عناصر من نوع اعداد صحيحة list1.add(1);// اضافةعنصر الى القيمة قيمته 1 list1.add(2);// ضافةعنصر الى القيمة قيمته 2 test(list1);// تمرير المرجع للكائن LinkedList الذي تم انشائه الى الدالة التي قمت بانشائها والتي اسمها test Iterator it = list1.iterator();// أنشأت كائن من iterator للمرور على عناصر LinkedList while(it.hasNext()){// حلقة تكرار تعمل طالما القائمة تمتلك عنصر آخر System.out.println(it.next());// طباعة قيمة العنصر } } في المثال السابق قمت بانشاء دالة تستقبل معامل واحد وهو من نوع List , يمكنك متابعة الشرح في الكود , نتيجة الكود سوف تكون 1 2 3 1 اقتباس
1 شرف الدين حفني نشر 10 يناير 2022 أرسل تقرير نشر 10 يناير 2022 بالإضافة إلى إجابة محمد فإن عند عمل تعديل على القائمة في الدالة ستلاحظ أن التعديل قد إحدث أيضًا على Linked list الأصلية بخارج الدالة وذلك لأن على الرغم أن من المفترض Java أنها دائمًا ما تقوم بالتمرير بالقيم (pass by value) ألا أن هناك مشكلة وهي أن تلك القيمة في حالة الكائنات تكون عبارة عن pointer وبالتالي أي تغيير يحدث يطول الكائن الأصلي, إن كنت تريد تمرير الLinked list دون المساس بالقائمة الأصلية يمكنك إذا بدلًا من تمريرها تمرير نسخةً منها عبر الدالة clone كما في الشفرة البرمجية التالية LinkedList temp_list = (LinkedList) list1.clone(); test(temp_list); بهذه الطريقة نضمن أن لا يتم حدوث أي تغيير على القائمة الأصلية 1 اقتباس
السؤال
ندى ثابت
كيف ممكن أرسل linked list كباراميتر
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.