Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Ѐилософия Java3Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 95

Автор Π‘Ρ€ΡŽΡ ЭккСль

Из Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ flavorSet() Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ случайноС подмноТСство элСмСнтов ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅.

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов Π² Java Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ особых слоТностСй. Для ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки:

// arrays/MultidimensionalPrimitiveArray.java // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов import java.util.*.

public class MultidimensionalPrimitiveArray { public static void main(String[] args) { int[][] a = {

{ 1. 2. 3. }. { 4, 5, 6, }.

}:

System out println(Arrays.deepToString(a));

}

} /* Output: [[1. 2, 3]. [4, 5. 6]] *///:-

КаТдая влоТСнная ΠΏΠ°Ρ€Π° Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок описываСт Π½ΠΎΠ²ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Java SE5 Arrays.deepToString(). Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π² String.

Массив Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом new. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ создания Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ new:

//: arrays/ThreeDWithNew.java import java.util.*;

public class ThreeDWithNew {

public static void main(String[] args) {

// Π’Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив фиксированной Π΄Π»ΠΈΠ½Ρ‹:

int[][][] Π° = new int[2][2][4]:

System.out.pri ntln(Arrays.deepToStri ng(a)):

}

} /* Output:

[[[0. 0. 0, 0]. [0. 0. 0, 0]]. [[0, 0, 0. 0]. [0. 0. 0, 0]]] *///β€’-

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ссли массиву ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΉΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅ Π·Π°Π΄Π°Π½Ρ‹ явныС значСния, ΠΎΠ½ автоматичСски инициализируСтся значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ссылками null.

Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ массивов, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ (это называСтся ступСнчатым массивом):

//: arrays/RaggedArray java import java util *;

public class RaggedArray {

public static void main(Stnng[] args) { Random rand = new Random(47), // Π’Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ int[][][] Π° = new int[Π³Π°nd.nextInt(7)][][]; for(int i =0. i < a length. i++) {

a[i] = new int[rand nextlnt(5)][]. for(int j = 0. j < a[i] length. j++)

a[i][j] = new int[rand nextlnt(5)].

}

System.out println(Arrays deepToString(a)),

}

} /* Output-

[[]. [[0]. [0]. [0. 0. 0. 0]]. [[]. [0. 0]. [0. 0]]. [[0. 0. 0]. [0]. [0. 0. 0. 0]]. [[0. 0. 0], [0. 0. 0]. [0]. []]. [[0]. []. [0]]] */// ~

ΠŸΠ΅Ρ€Π²Π°Ρ конструкция new создаСт массив, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ. Вторая конструкция new Π² Ρ†ΠΈΠΊΠ»Π΅ for заполняСт элСмСнты, Π½ΠΎ оставляСт Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ индСкс Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ выполнСния Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ new.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ с Π½Π΅-ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ элСмСнтами Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ объСдинСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ new Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках:

//β€’ arrays/MultidimensionalObjectArrays java import java.util *;

public class MultidimensionalObjectArrays { public static void main(String[] args) { BerylliumSphere[][] spheres = {

{ new Beryl liumSphereO, new Beryl liumSphereO }. { new Beryl 1 iumSphereO, new Beryl 1 iumSphereO .

new Beryl liumSphereO. new Beryl liumSphereO }, { new Beryl liumSphereO. new Beryl liumSphereO.

new Beryl li umSphereO. new Beryl liumSphereO , new BerylliumSphereO, new Beryl 1iumSphere(). new Beryl liumSphereO. new Beryl liumSphereO }.

}:

System out.printin(Arrays.deepToStri ng(spheres));

}

} /* Output:

[[Sphere 0. Sphere 1]. [Sphere 2, Sphere 3. Sphere 4, Sphere 5]. [Sphere 6. Sphere 7. Sphere 8. Sphere 9. Sphere 10. Sphere 11. Sphere 12. Sphere 13]] *///:-

Массив spheres Ρ‚Π°ΠΊΠΆΠ΅ являСтся ступСнчатым, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρ‹ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… списков ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ.

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ автоматичСской ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ массивов:

//β€’ arrays/AutoboxingArrays.java import java util *.

public class AutoboxingArrays {

public static void main(String[] args) {

Integer[][] a = { // АвтоматичСская ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°

{ 1, 2. 3. 4, 5, 6. 7. 8, 9, 10 }, ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ #

{ 21. 22, 23, 24, 25, 26. 27. 28. 29. 30 }. { 51. 52. 53. 54, 55. 56. 57. 58. 59. 60 }. { 71. 72. 73. 74, 75. 76. 77. 78. 79. 80 }.

}.

System.out.pri ntlΠ»(Arrays.deepToStri ng(a));

}

} /* Output-

[[1. 2, 3. 4. 5. 6. 7. 8. 9. 10]. [21. 22. 23. 24. 25. 26. 27. 28. 29. 30]. [51. 52. 53.

54. 55. 56. 57. 58. 59, 60], [71, 72, 73, 74. 75. 76. 77. 78. 79. 80]] *///-

А Π²ΠΎΡ‚ ΠΊΠ°ΠΊ происходит поэлСмСнтноС построСниС массива Π½Π΅-ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

//. arrays/AssemblingMultidimensionalArrays.java // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов import java util.*;

public class AssemblingMultidimensionalArrays { public static void main(String[] args) { Integer[][] a. a = new Integer[3][]; for(int i = 0; i < a.length; i++) { a[i] = new Integer[3], for(int j = 0; j < a[i] length; j++)

a[i][j] = i * j; // АвтоматичСская ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°

}

System.out println(Arrays.deepToString(a));

}

} /* Output.

[[0, 0, 0]. [0. 1. 2]. [0. 2. 4]] *///:-

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ i*j присутствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Integer.

ΠœΠ΅Ρ‚ΠΎΠ΄ Arrays.deepToString() Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ с массивами ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Π°ΠΊ ΠΈ с массивами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²:

//: arrays/MultiDimWrapperArray.java // Multidimensional arrays of "wrapper" objects, import java util *;

public class MultiDimWrapperArray {

public static void main(Str*ing[] args) {

Integer[][] al = { // АвтоматичСская ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° { 1. 2. 3. }. { 4. 5. 6, }.

}.

Double[][][] a2 = { // АвтоматичСская ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° { { 1.1. 2 2 }. { 3 3. 4.4 } }. { { 5.5, 6.6 }. { 7.7, 8 8}}, { { 9.9, 1 2 }. { 2.3, 3 4}},

}.

string:::: Π°Π· = {

{ "The", "Quick", "Sly", "Fox" }, { "Jumped". "Over" }.

{ "The". "Lazy". "Brown", "Dog", "and", "friend" },

System.out.printiΠ»("al: " + Arrays.deepToString(al)): System.out.printiΠ»("a2: " + Arrays.deepToString(a2)): System.out.printin("a3: " + Arrays.deepToString(a3)):

}

} /* Output:

al: [[1. 2. 3], [4. 5. 6]]

a2: [[[1.1. 2.2], [3.3. 4.4]]. [[5.5. 6.6], [7.7. 8.8]]. [[9.9. 1.2]. [2.3. 3.4]]] a3: [[The, Quick. Sly. Fox], [Jumped, Over], [The. Lazy. Brown. Dog. and. friend]] *///:-

И снова Π² массивах Integer ΠΈ Double ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ автоматичСской ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Java SE5 создаСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹-Β«ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈΒ».

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΈ парамСтризация

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС массивы ΠΈ парамСтризация ΠΏΠ»ΠΎΡ…ΠΎ ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. НапримСр, массивы Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ:

Peel<Banana>[] peels = new Peel<Banana>[10]: II He Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ

Π‘Ρ‚ΠΈΡ€Π°Π½ΠΈΠ΅ удаляСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ Ρ‚ΠΈΠΏΠ°, Π° массив Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ хранящихся Π² Π½Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для обСспСчСния бСзопасности Ρ‚ΠΈΠΏΠΎΠ². Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ сам Ρ‚ΠΈΠΏ массива:

//: arrays/ParameterizedArrayType.java

class ClassParameter<T> {

public T[] f(T[] arg) { return arg: }

}

class MethodParameter {

public static <T> T[] f(T[] arg) { return arg; }

}

public class ParameterizedArrayType {

public static void main(String[] args) {

Integer[] ints = { 1. 2. 3. 4. 5 }; Double[] doubles = { 1.1. 2.2. 3.3. 4.4'. 5.5 }; Integer[] ints2 =

new CIassParameter<Integer>().f(ints); Double[] doubles2 =

new ClassParameter<Double>().f(doubles); ints2 = MethodParameter.f(ints); doubles2 = MethodParameter.f(doubles);

}

} ///:-

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ вмСсто ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ класса: Π²Π°ΠΌ Π½Π΅ придСтся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ Β«Π²Π΅Ρ€ΡΠΈΡŽΒ» класса с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ примСняСтся, ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ static. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ класс Π½Π΅ всСгда ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

Как выясняСтся, Π½Π΅ совсСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ массивы ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, компилятор Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр массива ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ссылку Π½Π° Ρ‚Π°ΠΊΠΎΠΉ массив. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

List<String>[] Is.

Вакая конструкция ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π±Π΅Π· ΠΌΠ°Π»Π΅ΠΉΡˆΠΈΡ… Π²ΠΎΠ·Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ со стороны компилятора. И хотя Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ массива с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ:

//β€’ arrays/ArrayOfGenerics java

// Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания массивов ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²

import java util *,

public class ArrayOfGenerics {

(PSuppressWarni ngs ("unchecked") public static void main(String[] args) { List<String>[] Is; List[] la = new List[10], Is = (List<String>[])la; // ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ

// Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ 1sΠ‘ΠžΠ› = new ArrayList<String>(). // ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС Π½Π° стадии компиляции //! ls[l] = new ArrayList<Integer>();

// ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° List<String> являСтся ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠΌ Object Object[] objects = Is. // ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ присваиваниС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ // ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΈ выполняСтся Π±Π΅Π· ошибок ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ objects[l] = new ArrayList<Integer>().

// Но Ссли ваши потрСбности достаточно элСмСнтарны. II ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ, хотя // ΠΈ с ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΎ "Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΌ" ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ-List<BerylliumSphere>[] spheres =

(List<Beryl1iumSphere>[])new List[10]. for(int i = 0; i < spheres length; i++)

spheres[i] = new ArrayList<BerylliumSphere>();

}

} ///-

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ссылки Π½Π° List<String>[] выполняСтся нСкоторая ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° стадии компиляции. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ массивы ΠΊΠΎΠ²Π°Ρ€ΠΈ-Π°Π½Ρ‚Π½Ρ‹, поэтому List<String>[] Ρ‚Π°ΠΊΠΆΠ΅ являСтся Object[], поэтому Π²Π°ΡˆΠ΅ΠΌΡƒ массиву ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ArrayList<Integer> Π±Π΅Π· Π²Ρ‹Π΄Π°Ρ‡ΠΈ ошибок Π½Π° стадии компиляции ΠΈΠ»ΠΈ выполнСния.

Если Π²Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ восходящСС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Π° ваши потрСбности ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ просты, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ² Π½Π° стадии компиляции. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ практичСски всСгда оказываСтся Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‡Π΅ΠΌ массив ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ тСстовых Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈ экспСримСнтах с массивами (ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅) ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ простого заполнСния массивов тСстовыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, описанный Π² этом Ρ€Π°Π·Π΄Π΅Π»Π΅, заполняСт массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ значСниями.

Arrays.fill()

Класс Arrays ΠΈΠ· стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Java содСрТит вСсьма Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ fill(): ΠΎΠ½ всСго лишь Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ элСмСнтС массива, Π° Π² случаС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ΄Π½Ρƒ ссылку Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

//β€’ arrays/FillingArrays.java // ИспользованиС Arrays.fill О import java.util.*;

import static net.mindview.util.Print.*;

public class FillingArrays {

public static void main(String[] args) { int size = 6;

boolean[] al = new boolean[size];

byte[] a2 = new byte[size];

char[] a3 = new char[size];

short[] a4 = new short[size];

int[] a5 = new int[size];

long[] a6 = new long[size];

float[] a7 = new float[size];

doublet] a8 = new double[size];

String!] a9 = new String[size];

Arrays.fi11(al, true);

printC'al = " + Arrays.toString(al));

Arrays.fill(a2, (byte)ll);

print("a2 = " + Arrays.toString(a2));

Arrays.fill(Π°Π—, 'x');

print("a3 = " + Arrays toString(a3));

Arrays.fill(a4, (short)17);

print("a4 = " + Arrays.toString(a4));

Arrays.fill(a5, 19);

print("a5 = " + Arrays.toString(a5));

Arrays.fill(a6, 23);

print("a6 = " + Arrays.toString(a6));

Arrays.fill(a7. 29);

print("a7 = " + Arrays toString(a7));