מערך דינאמי בג'אוה

מערך דינאמי בג'אוה

נוכחתי לדעת שבג'אוה לא קיים מערך דינאמי.
אני תמה איך לא קיים דבר כזה בג'אוה אבל בסי למשל זה כאן קיים.

אם כן, איך מיישמים בג'אוה את האפשרות להגדיל מערך לפי הצורך?
 

BravoMan

Active member
מה זאת אומרת "מערך דינאמי"?

א) ב-Java יש הרבה מחלקות Collection, אחת מהן היא ArrayList:
https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
&nbsp
זה חלק מהספרייה הסטנדרטית של Java וזה נותן לך מערך דינמי לחלוטין שגדל אוטומטית כל פעם שאתה מוסיף לו איבר, בלי שתצטרך להגדיל אותו ידנית לפני ההכנסה.
&nbsp
ב) ב-C, "מערך דינמי" הוא בד"כ זיכרון שמוקצה בזמן ריצה ע"י malloc.
לפי הגדרה זו, כל המערכים ב-Java דינמיים היות ואתה חייב להשתמש ב-new כדי לייצר מערך, ולא יכול להגדיר אותו סטטית כמו ב-C
&nbsp
הדבר היחיד מ-C שאין לו מקבילה ב-Java, לפחות כזו שאני יכול לחשוב עליה בשלוף, זה realloc, שבעצם מאגד הקצאה מחדש של זיכרון עם העתקת תוכן מאזור הזיכרון הקודם, אבל יש סיבה טובה ל-"חיסרון" הזה:
ניהול זיכרון ב-Java הוא ברובו אוטומטי, ולכן אין בזה צורך.
&nbsp
כל פעם שאתה צריך לטפל באוסף עצמים דינמי (כזה שגדל וקטן במהלך ריצת התוכנה), יש לך מגוון מחלקות מוכנות לשירותך.
&nbsp
&nbsp
 
למעלה