Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Generated, ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠ»Π°ΡΡΠΎΠ² CountingGenerator, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅:
II: arrays/TestGenerated.java import java.util.*; import net.mindview util.*:
public class TestGenerated {
public static void main(String[] args) { Integer[] a = { 9. 8. 7. 6 }: System.out.pri ntin(Arrays.toStri ng(a)); a = Generated, array (a, new CountingGenerator.IntegerO); System. out. pri nti n( Arrays. toStri ng(a)): Integer[] b = Generated.array(Integer.class.
new CountingGenerator.IntegerO, 15): System, out. pri nti n(Arrays. toStri ng(b)):
}
} /* Output: [9. 8, 7. 6] [0. 1. 2. 3]
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14] *///:-
Π₯ΠΎΡΡ ΠΌΠ°ΡΡΠΈΠ² Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ, ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Generated.array(). ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ b ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Β«Ρ Π½ΡΠ»ΡΒ».
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΡ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π°ΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ. ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ Β«ΠΎΠ±Π΅ΡΡΠΎΠΊΒ» ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π΅Π³ΠΎ Π² ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΠ΅Π· Π½Π΅Π³ΠΎ Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ².
//: net/mi ndvi ew/uti1/ConvertTo.java
package net.mi ndvi ew.uti1;
public class ConvertTo {
public static booleanC] primitive(Boolean[] in) { boolean[] result = new boolean[in.length], for(int i = 0; i < in.length; i++)
result[i] = in[i]; // ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° return result;
}
public static chart] primitive(Character[] in) { chart] result = new char[in.length]; for(int i = 0; i < in.length; i++)
result[i] = in[i]; return result;
}
public static byte[] primitive(Bytet] in) { bytet] result = new bytetin.length]; for(int i = 0; i < in.length; i++)
resultti] = inti]; return result;
}
public static shortt] primitive(Short[] in) { shortt] result = new shorttin.length]; for(int i = 0; i < in.length; i++)
resultti] = inti]; return result;
}
public static int[] primitivedntegert] in) { intt] result = new int[in.length]: for(int i = 0; i < in.length; i++)
resultti] = inti]; return result;
}
public static longt] primitive(Longt] in) { longt] result = new longtin.length]; for(int i = 0; i < in.length; i++)
resultti] = inti]; return result;
}
public static floatt] primitive(Float[] in) { floatt] result = new floatCin.length]: for(int i = 0; i < in.length, i++)
resultti] = inti]; return result;
public static doublet] primitive(Double[] in) { doublet] result = new double[in.length]; for(int i = 0; i < in.length; i++)
result[i] = in[i]; return result;
}
} /// ~
ΠΠ°ΠΆΠ΄Π°Ρ Π²Π΅ΡΡΠΈΡ primitive() ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, Π° Π·Π°ΡΠ΅ΠΌ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° in. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ
result[i] = in[i];
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ConvertTo Ρ ΠΎΠ±Π΅ΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ Generated.array():
//: arrays/PrimitiveConversionDemonstration.java import java.util.*; import net.mindview.util.*;
public class PrimitiveConversionDemonstration { public static void main(String[] args) {
IntegerC] a = Generated.array(Integer.class,
new CountingGenerator.IntegerO. 15); int[] b = ConvertTo.primitive(a); System.out.pri ntin(Arrays.toStri ng(b)); boolean[] Ρ = ConvertTo.primitive(
Generated.array(Boolean.class.
new CountingGenerator.BooleanO, 7)); System. out. pri nti n(Arrays. toStri ng(c));
}
} /* Output:
[0. 1. 2, 3, 4, 5, 6. 7. 8. 9. 10. 11. 12. 13. 14] [true, false, true, false, true, false, true] *///:-
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅ΡΡΠΈΡΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ RandomGenerator:
//: arrays/TestArrayGeneration.java
// Test the tools that use generators to fill arrays.
import java.util.*;
import net.mindview.util.*;
import static net.mindview.util .Print.*;
public class TestArrayGeneration {
public static void main(String[] args) { int size = 6;
boolean[] al = ConvertTo.primitive(Generated.array(
Bool ean. class, new RandomGenerator.BooleanO, size)); printC'al = " + Arrays.toString(al)); byte[] a2 = ConvertTo.primitive(Generated.array(
Byte.class, new RandomGenerator.Byte(), size)); print("a2 = " + Arrays.toString(a2)); char[] a3 = ConvertTo.primitive(Generated.array( Character.class,
new RandomGenerator.CharacterO, size)); print("a3 = " + Arrays.toString(a3)); ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ & short[] Π°4 = ConvertTo.primitive(Generated.array(
Short.class, new RandomGenerator.ShortΠ. size)); print("a4 = " + Arrays.toString(a4)); int[] a5 = ConvertTo primitive(Generated.array(
Integer.class, new RandomGenerator.IntegerO. size)); print("a5 = " + Arrays.toString(a5)); long[] a6 = ConvertTo.primitive(Generated array(
Long.class, new RandomGenerator.Long(). size)), print("a6 = " + Arrays.toString(a6)); floatt] a7 = ConvertTo.primitive(Generated.array(
Float.class, new RandomGenerator.FloatΠ. size)); print("a7 = " + Arrays.toString(a7)); doubled a8 = ConvertTo primitive(Generated.array(
Double.class, new RandomGenerator.DoubleO, size)); print("a8 = " + Arrays.toString(a8));
}
} /* Output:
al = [true, false, true, false, false, true] a2 = [104, -79, -76, 126, 33, -64] a3 = [Z, n, T, c. Q. r]
a4 = [-13408, 22612, 15401, 15161, -28466, -12603] a5 = [7704, 7383, 7706, 575, 8410, 6342] a6 = [7674, 8804, 8950, 7826, 4322, 896] a7 = [0.01, 0.2, 0.4, 0.79, 0.27, 0.45] a8 = [0 16, 0.87, 0.7, 0.66, 0.87, 0.59] *///:-
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ConvertTo.primitive() ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Arrays
Π Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ java.util Π²ΠΊΠ»ΡΡΠ΅Π½ ΠΊΠ»Π°ΡΡ Arrays, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½Π°Π±ΠΎΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ. ΠΡΠ½ΠΎΠ²Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅ΡΡΡ: equals() ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π΄Π²Π° ΠΌΠ°ΡΡΠΈΠ²Π° (ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²Π΅ΡΡΠΈΡ deepEquals() Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²); fill() Π±ΡΠ» ΠΎΠΏΠΈΡΠ°Π½ ΡΠ°Π½Π΅Π΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅; sort() ΡΠΎΡΡΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²; binarySearch() ΠΈΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅; toStringQ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ String, a hashCode() Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Ρ Π΅Ρ-ΠΊΠΎΠ΄ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΡΠ΅ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΈ Object. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠ΅ΡΠΎΠ΄ Arrays.asList() ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π»ΡΠ±ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ List (ΡΠΌ. Π³Π»Π°Π²Ρ 11).
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Arrays, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π½Π΅ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π² Arrays.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Java ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ System.arraycopy(), ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΠΏΡΠΈ ΡΡΡΠ½ΠΎΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π² ΡΠΈΠΊΠ»Π΅ for. ΠΠ΅ΡΠΎΠ΄ System.arraycopy() ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ. ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ'ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² int:
//: arrays/CopyingArrays.java // Using System.arraycopyO
import java.util.*;
import static net.mindview.util.Print.*;
public class CopyingArrays {
public static void main(String[] args) { int[] i = new int[7]; int[] j = new int[10]; Arrays.fill(i. 47); Arrays.fill(j. 99); printC'i = " + Arrays.toString(i)); printC'j = " + Arrays.toString(j)); System.arraycopy(i. 0. j. 0. i.length); printC'j = " + Arrays.toString(j)); int[] ΠΊ = new int[5]; Arrays.fill(k. 103); System.arraycopy(i. 0. ΠΊ. 0. ΠΊ length); printC'k = " + Arrays.toString(k)); Arrays.fill(k, 103); System.arraycopy(k, 0. i, 0, k.length); printC'i = " + Arrays.toString(i)); // ΠΠ±ΡΠ΅ΠΊΡΡ:
IntegerC] u = new Integer[10];
Integer[] v = new Integer[5];
Arrays.fill(u. new Integer(47));
Arrays.fill(v. new Integer(99));
printC'u = " + Arrays.toString(u));
printC'v = " + Arrays.toString(v));
System.arraycopy(v. 0. u. u.length/2, v.length);
printC'u = " + Arrays.toString(u));
}
} /* Output:
i = [47. 47. 47. 47. 47. 47. 47] j = [99. 99. 99. 99. 99. 99. 99. 99. 99. 99] j = [47. 47. 47. 47. 47. 47. 47. 99. 99. 99] k = [47. 47. 47. 47. 47] i = [103. 103. 103. 103. 103. 47. 47] u = [47. 47. 47. 47. 47. 47. 47. 47. 47. 47] v = [99. 99. 99. 99. 99] u = [47. 47. 47. 47. 47. 99. 99. 99. 99. 99] *///:-
Π Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°Ρ arraycopy() ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅, ΠΏΡΠΈΠ΅ΠΌΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΈΠ΅ΠΌΠ½ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π»ΡΠ±ΠΎΠ΅ Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ Π³ΡΠ°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅, ΡΠ°ΠΊ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΊΠΈ, Π½ΠΎ Π½Π΅ ΡΠ°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π’Π°ΠΊΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΡΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
System.arraycopy() Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ, Π½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ β ΡΠΈΠΏΡ Π΄Π²ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
ΠΠ»Π°ΡΡ Arrays ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ equals() Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ ΡΠ΅Π»ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½ Π΄Π»Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΠΈ Object. Π§ΡΠΎΠ±Ρ Π΄Π²Π° ΠΌΠ°ΡΡΠΈΠ²Π° ΡΡΠΈΡΠ°Π»ΠΈΡΡ ΡΠ°Π²Π½ΡΠΌΠΈ, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ equals() Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΡ; Π΄Π»Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ equals() ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ Β«ΠΎΠ±Π΅ΡΡΠΊΠΈΒ» β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Integer. equals() Π΄Π»Ρ int). ΠΡΠΈΠΌΠ΅Ρ:
// arrays/ComparingArrays java // Using Arrays equals() import java.util.*;
import static net.mindview.util Print.*;
public class ComparingArrays {
public static void main(String[] args) { int[] al = new int[10]; int[] a2 = new int[10]; Arrays.filHal. 47); Arrays.fill(a2, 47); print(Arrays.equals(al, a2)); a2[3] = 11;
print(Arrays.equals(al, a2)); String[] si = new String[4]; Arrays fill(si. "Hi");
String[] s2 = { new StringC'Hi"), new StringC'Hi"),
new StringC'Hi"). new StringC'Hi") }; print(Arrays equals(sl. s2)),
}
} /* Output
true
false
true *///β’-
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΠ°ΡΡΠΈΠ²Ρ al ΠΈ a2 ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠ°Π²Π΅Π½ true, Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ false. Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ si ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ s2 ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΡΡ ΡΠ°Π·Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°Π²Π΅Π½ΡΡΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ (Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ Object.equals()), ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π²Π΅Π½ true.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π² Ρ ΠΎΠ΄Π΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠΈΠΏΠΎΠ², Π½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΡΡ ΡΠΈΠΏΠΎΠ².
ΠΠ»Π°Π²Π½ΠΎΠΉ ΡΠ΅Π»ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Β«ΠΎΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ, ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌΒ». Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ± ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΠΊΠΎΠ΄ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π² ΡΠ°Π·Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Β«ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΒ». Π ΡΡΠΎΠΌ ΠΏΠ°ΡΡΠ΅ΡΠ½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅. ΠΠ±ΡΠ΅ΠΊΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΊΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ, ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ°Π·Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΡΡΠ°ΠΆΠ°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ.
Π Java ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΠ°ΠΆΠ°ΡΡΡΡ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. ΠΠ΅ΡΠ²ΡΠΉ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Β«Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌΒ» ΠΌΠ΅ΡΠΎΠ΄Π΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΊΠ»Π°ΡΡ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ java.lang.Comparable β ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ compareTo(). Π Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°. ΠΠ½ Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠ΅Π½ΡΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, Π½ΡΠ»Ρ ΠΏΡΠΈ ΡΠ°Π²Π΅Π½ΡΡΠ²Π΅ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π±ΠΎΠ»ΡΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°.