рдореИрдВ рдЖрдкрдХреЛ рдирдорд╕реНрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ, рд╣реЗрдмреНрд░рд╛рд▓реБрдбреА!
рдЬрд╛рд╡рд╛ рдореЗрдВ рдХреБрдЫ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдпрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЗрдЦ рд╡рд┐рдЬреБрдЕрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗ (рд╣рдорд╛рд░реА рддрд╕реНрд╡реАрд░реЗрдВ рд╕рдм рдХреБрдЫ рд╣реИрдВ), рд╢реБрд░реБрдЖрддреА рдЬрд╛рд╡рд╛ рд╡рд┐рдЬреБрдЕрд▓реНрд╕, рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдирдП ArrayList () рд▓рд┐рдЦрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдереЛрдбрд╝рд╛ рдкрддрд╛ рд╣реИред

рдЖрдЬ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ ArrayLists рдХреА
ArrayList - рд╕реВрдЪреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬрд╛рд╡рд╛ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ рд╣реЛрддреА рд╣реИ, рдФрд░ рд╕рд░рдгреА рдмрдирдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдмрдврд╝ рдпрд╛ рд╕рд┐рдХреБрдбрд╝ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИред ArrayList рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЕрдкрдирд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдЖрдпрд╛рдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред ArrayList рддрддреНрд╡ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ null рднреА рд╢рд╛рдорд┐рд▓ рд╣реИредрд╡рд╕реНрддреБ рдирд┐рд░реНрдорд╛рдг
ArrayList<String> list = new ArrayList<String>();
рдирдИ рдмрдирд╛рдИ рдЧрдИ рд╕реВрдЪреА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рддрддреНрд╡ рдФрд░
рдЖрдХрд╛рд░ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВред
рдПрд▓реАрдореЗрдВрдЯрдбреИрдЯрд╛ рд╡реИрд▓реНрдпреВрдЬ рдХрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ (рдЬреЗрдиреЗрд░рд┐рдХ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ) рдХреЗ рдПрдХ рд╕рд░рдгреА рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ
рд╕реНрдЯреНрд░рд┐рдВрдЧ [] ред рдпрджрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ 10 рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА рд╡рд╕реНрддреБ (рдПрдХ рдбрд╛рд▓реА рд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ)ред
elementData = (E[]) new Object[10];

рдЖрдк
ArrayList (рдХреНрд╖рдорддрд╛) рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реВрдЪреА рдХреНрд╖рдорддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рдирд╛
list.add("0");

рдРрдб (рдорд╛рди) рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреАрдЬреЗрдВ рд╣реЛрддреА рд╣реИрдВ:
1) рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдирдпрд╛ рддрддреНрд╡ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рдгреА рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЧрд╣ рд╣реИ;
ensureCapacity(size + 1);
2) рдПрдХ рддрддреНрд╡ рд╕рд░рдгреА рдХреЗ рдЕрдВрдд (
рдЖрдХрд╛рд░ рдореВрд▓реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░) рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
elementData[size++] = element;
рд╣рдо рд╕рдВрдкреВрд░реНрдг
рд╕реБрдирд┐рд╢реНрдЪрд┐рддрддрд╛ (рдиреНрдпреВрдирддрдо рдХреНрд╖рдорддрд╛) рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдХреЗрд╡рд▓ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рд╕рд░рдгреА рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИ, рддреЛ рдирдИ рдХреНрд╖рдорддрд╛ рдХреА рдЧрдгрдирд╛ рд╕реВрддреНрд░
(рдкреБрд░рд╛рдиреЗрддрд╛ * 3) / 2 + 1 рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ ред рджреВрд╕рд░рд╛ рдмрд┐рдВрджреБ рддрддреНрд╡реЛрдВ рдХреА рдирдХрд▓ рд╣реИред рдпрд╣
рдореВрд▓ System.arraycopy () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛
рд╣реИ , рдЬреЛ рдЬрд╛рд╡рд╛ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд 15 рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдПрдХ рд▓реВрдк рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
list.add("1");

... list.add("9");

list.add("10");
11 рд╡реЗрдВ рддрддреНрд╡ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдЪреЗрдХ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд░рдгреА рдореЗрдВ рдХреЛрдИ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдПрдХ рдирдпрд╛ рд╕рд░рдгреА рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░
System.arraycopy () рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрд╕рдХреЗ рдмрд╛рдж, рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЬрд╛рд░реА рд╣реИ

... list.add("14");

рд╕реВрдЪреА рдХреЗ "рдордзреНрдп" рдореЗрдВ рдЬреЛрдбрд╝рдирд╛
list.add(5, "100");
рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЗрдВрдбреЗрдХреНрд╕ рд╡рд╛рд▓реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рддреАрди рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ:
1) рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдирдпрд╛ рддрддреНрд╡ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рдгреА рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЧрд╣ рд╣реИ;
ensureCapacity(size+1);
2)
System.arraycopy () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдП рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рддреИрдпрд╛рд░
рдХрд░реЗрдВ ;
System.arraycopy(elementData, index, elementData, index + 1, size - index);

3) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рд╛рде рддрддреНрд╡ рдХрд╛ рдореВрд▓реНрдп рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
elementData[index] = element; size++;

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрдм рдХреЛрдИ рддрддреНрд╡ рдЗрдВрдбреЗрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдПрд░реЗ рдореЗрдВ рдХреЛрдИ рдЦрд╛рд▓реА рд╕реАрдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ
System.arraycopy () рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рджреЛ рдмрд╛рд░ рд╣реЛрдЧрд╛: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ
ensCapacity () рдореЗрдВ , рджреВрд╕рд░рд╛
рдРрдб (рдЗрдВрдбреЗрдХреНрд╕, рд╡реИрд▓реНрдпреВ) рд╡рд┐рдзрд┐ рдореЗрдВ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреВрд░реЗ рдРрдб рдСрдкрд░реЗрд╢рди рдХреА рдЧрддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред
рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрдм рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рд╕реВрдЪреА рдореЗрдВ рдПрдХ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ "рдордзреНрдп" рддрдХ, рдпрд╣
рдРрдбрдСрд▓ (рд╕реВрдЪрдХрд╛рдВрдХ, рд╕рдВрдЧреНрд░рд╣) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдФрд░ рдпрджреНрдпрдкрд┐ рдпрд╣ рд╡рд┐рдзрд┐
System.arraycopy () рдХреЛ рддреАрди рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЕрдВрдд рдореЗрдВ рдпрд╣ рддрддреНрд╡ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реЛрдЧрд╛ред
рдЖрдЗрдЯрдо рд╣рдЯрд╛рдПрдВ
рдЖрдЗрдЯрдо рд╣рдЯрд╛рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
-
рдирд┐рдХрд╛рд▓реЗрдВ (рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛) рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛- рдореВрд▓реНрдп
рдирд┐рдХрд╛рд▓реЗрдВ (рдореВрд▓реНрдп) рджреНрд╡рд╛рд░рд╛рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдПрдХ рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ
list.remove(5);
рдкрд╣рд▓реЗ, рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХрд┐рддрдиреЗ рдЖрдЗрдЯрдо рдХреЙрдкреА рдХрд░рдиреЗ рд╣реИрдВред
int numMoved = size - index - 1;
рдЙрд╕рдХреЗ рдмрд╛рдж
System.arraycopy () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ
System.arraycopy(elementData, index + 1, elementData, index, numMoved);
рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рдХрд░реЗрдВ рдФрд░ рдЕрдВрддрд┐рдо рддрддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдПрдВ
elementData[--size] = null;
рдорд╛рди рд╕реЗ рд╣рдЯрд╛рддреЗ рд╕рдордп, рдПрдХ рд▓реВрдк рдореЗрдВ рд╕реВрдЪреА рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди рд╣реЛрдиреЗ рддрдХ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рдЖрдЗрдЯрдо рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкрд░рд┐рд╡рд░реНрдзрди 1: рдЬреИрд╕рд╛ рдХрд┐
рдорд╛рдЗрдХрдорд┐рд░рдЬрд╝рд╛рдпрдиреЛрд╡ рдиреЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдиреЛрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЬрдм рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХрдо рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрдЬреАрдм рд╕реНрдореГрддрд┐ рд▓реАрдХ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП,
trimToSize () рд╡рд┐рдзрд┐ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рди рдХрд░реЗрдВред
рдкрд░рд┐рдгрд╛рдо
- рд╣реЗ (1) рдХреЗ рджреМрд░рд╛рди рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╡рд╕реНрддреБрдУрдВ рддрдХ рддреНрд╡рд░рд┐рдд рдкрд╣реБрдВрдЪ;
- рд░реИрдЦрд┐рдХ рд╕рдордп рдУ (рдПрди) рдореЗрдВ рдореВрд▓реНрдп рд╕реЗ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ;
- рддрддреНрд╡реЛрдВ рдХреЛ рд╕реВрдЪреА рдХреЗ "рдордзреНрдп" рд╕реЗ рдбрд╛рд▓рд╛ рдФрд░ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдзреАрдорд╛;
- рдЖрдк рдЕрд╢рдХреНрдд рд╕рд╣рд┐рдд рдХрд┐рд╕реА рднреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ;
- рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдирд╣реАрдВред
рд╕рдВрджрд░реНрдн
рд╕реНрд░реЛрдд
ArrayListJDK7 рд╕реЗ
ArrayList рд╕реНрд░реЛрдд
JDK рдХреЗ рд╕реНрд░реЛрдд
OpenJDK рдФрд░ рд╡реНрдпрд╛рдкрд╛рд░ 6 рд╕реНрд░реЛрдд рд░рд┐рд▓реАрдЬрд╝ - рдмрд┐рд▓реНрдб b23рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ / рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ рдФрд░ рдпрд╣ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред