ΠΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Set
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²: ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°ΠΌΠΈ. ΠΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ:
//: net/mi ndvi ew/uti1/Sets.java package net.mindview.util; import java.util.*;
public class Sets {
public static <T> Set<T> union(Set<T> a, Set<T> b) { Set<T> result = new HashSet<T>(a);
result.addAl1(b). return result;
}
public static <T>
Set<T> intersection(Set<T> a. Set<T> b) { Set<T> result = new HashSet<T>(a). result retainAll(b); return result;
}
// ΠΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΈΠ· Π½Π°Π΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°-public static <T> Set<T> difference(Set<T> superset. Set<T> subset) {
Set<T> result = new HashSet<T>(superset); result.removeAll(subset). return result;
}
// ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ -- Π²ΡΠ΅. ΡΡΠΎ Π½Π΅ Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ public static <T> Set<T> complement(Set<T> a, Set<T> b) {
return difference(union(a. b). intersection^, b));
}
} ///:-
ΠΠ΅ΡΠ²ΡΠ΅ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄ΡΠ±Π»ΠΈΡΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΊΠΎΠΏΠΈΡΡΡ Π΅Π³ΠΎ ΡΡΡΠ»ΠΊΠΈ Π² Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ HashSet, ΠΏΠΎΡΡΠΎΠΌΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Set Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Set.
Π§Π΅ΡΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°ΠΌΠΈ: union() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Set, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²-Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², intersection() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Set Ρ ΠΎΠ±ΡΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², difference() Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΠ°Π·Π½ΠΎΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ², a complement) β ΠΎΠ±ΡΠ΅ΠΊΡ Set ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, Π½Π΅ Π²Ρ ΠΎΠ΄ΡΡΠΈΠΌΠΈ Π² ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ ΡΠ°Π·Π½ΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ Π°ΠΊΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΊΡΠ°ΡΠΎΠΊ:
//: generics/watercolors/Watercolors java package generics.watercolors;
public enum Watercolors {
ZINC. LEM0N_YELL0W. MEDIUM_YELLOW, DEEP_YELLOW, ORANGE. BRILLIANT_RED. CRIMSON. MAGENTA. ROSE_MADDER. VIOLET. CERULEAN_BLUE_HUE. PHTHALO_BLUE, ULTRAMARINE. COBALT_BLUE_HUE, PERMANENT_GREEN. VIRIDIAN_HUE. SAP_GREEN. YELL0W_0CHRE. BURNT_SIENNA. RAWJJMBER, BURNTJJMBER. PAYNES_GRAY. IVORY_BLACK } ///:-
ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° (ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΡΠ½Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΈΠΌΠ΅Π½) Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ EnumSet β Π½ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Java SE5 Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Set Π½Π° Π±Π°Π·Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ. Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ EnumSet.range() ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΡΡΠΎΠΈΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ:
II: generics/WatercolorSets.java import generics.watercolors.*; import java.util.*;
import static net.mindview.util.Print.*; ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ &
import static net.mindview util.Sets *; import static generics.watercolors.Watercolors.*;
public class WatercolorSets {
public static void main(String[] args) { Set<Watercolors> setl =
EnumSet.range(BRILLIANT_RED, VIRIDIAN_HUE); Set<Watercolors> set2 =
EnumSet range(CERULEAN_BLUE_HUE, BURNT_UMBER), printCsetl. " + setl); print("set2- " + set2);
print("union(setl. set2)- " + union(setl. set2)); Set<Watercolors> subset = intersection(setl. set2); print("intersection(setl. set2). " + subset). print("difference(setl. subset)- " +
difference(setl. subset)). print("difference(set2. subset). " +
difference(set2. subset)); print("complement(setl. set2) " + complement(setl. set2));
}
} /* Output.
setl. [BRILLIANT_RED. CRIMSON. MAGENTA. ROSE_MADDER, VIOLET. CERULEAN_BLUE_HUE. PHTHALO_BLUE. ULTRAMARINE. COBALT_BLUE_HUE. PERMANENT_GREEN. VIRIDIAN_HUE] set2- [CERULEAN_BLUE_HUE, PHTHALO_BLUE. ULTRAMARINE. COBALT_BLUE_HUE. PERMANENT_GREEN. VIRIDIAN_HUE. SAP_GREEN. YELL0W_0CHRE. BURNT_SIENNA. RAWJJMBER. BURNT_UMBER] union(setl. set2) [SAP_GREEN. ROSE_MADDER, YELL0W_0CHRE. PERMANENT_GREEN. BURNTJJMBER, COBALT_BLUE_HUE, VIOLET. BRILLIANT_RED. RAWJJMBER. ULTRAMARINE. BURNT_SIENNA. CRIMSON. CERULEAN_BLUE_HUE. PHTHALO_BLUE. MAGENTA. VIRIDIAN_HUE]
intersection(setl. set2): [ULTRAMARINE. PERMANENT_GREEN. COBALT_BLUE_HUE. PHTHALO_BLUE. CERULEAN_BLUE_HUE. VIRIDIAN_HUE]
difference(setl, subset): [ROSE_MADDER, CRIMSON. VIOLET. MAGENTA. BRILLIANT_RED] difference(set2. subset): [RAWJJMBER, SAP_GREEN. YELLOW J3CHRE, BURNT_SIENNA, BURNTJJMBER]
complement(setl, set2): [SAP_GREEN. ROSE_MADDER. YELL0W_0CHRE. BURNTJJMBER, VIOLET. BRILLIANT_RED, RAW_UMBER. BURNT_SIENNA. CRIMSON. MAGENTA] *///:-
Π Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π²Π°ΡΠΈΠ°Π½ΡΡ Π²ΡΠ·ΠΎΠ²Π° Sets.difference() Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Collection ΠΈ Map ΠΈΠ· java.util:
//: net/mi ndvi ew/uti1/Contai nerMethodDi fferences.java package net.mindview.util; import java lang reflect *; import java.util.*,
public class ContainerMethodDifferences {
static Set<String> methodSet(Class<?> type) {
Set<String> result = new TreeSet<String>(); for (Method m : type.getMethodsO) result.add(m.getNameO); return result;
}
static void interfaces(Class<?> type) {
System.out.print("Interfaces in " +
type getSimpleNameO + ": "); List<String> result = new ArrayList<String>();
for(Class<?> Ρ : type.getlnterfacesO) result.add(c.getSimpleName()); System.out.println(result);
}
static Set<String> object = methodSet(Object.class); static { object.add("clone"); } static void
differencesass<?> superset, Class<?> subset) {
System.out.pri nt(superset.getSimpleName() +
" extends " + subset.getSimpleNameO + ", adds: "); Set<String> comp = Sets.difference(
methodSet(superset). methodSet(subset)); ΡΠΎΡΡ.removeAll(object); // He ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ 'Object' System.out.println(comp); interfaces(superset),
}
public static void main(String[] args) {
System.out.printlnC'Collection: " +
methodSet(Collection.class)), interfaces(Collection.class); difference(Set.class. Collection.class); difference(HashSet.class. Set.class); difference(LinkedHashSet.class, HashSet.class); difference(TreeSet.class. Set.class); differences st. class. Col 1 ecti on.cl ass); difference(ArrayList.class, List.class); differences nkedLi st. class. List.class); difference(Queue.class. Collection.class); di fference(Pri ori tyQueue.class. Queue.class); System.out.println("Map: " + methodSet(Map.class)); difference(HashMap.class. Map.class); difference(LinkedHashMap.class. HashMap.class); difference(SortedMap.class. Map.class); difference(TreeMap.class, Map class);
}
} ///:-
ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΌ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ. ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Generator Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ²:
//: generics/BankTeller.java
II ΠΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°Ρ ΠΈΠΌΠΈΡΠ°ΡΠΈΡ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ.
import java.util.*;
import net.mindview.util.*;
class Customer {
private static long counter = 1; private final long id = counter++; private Customer() {}
public String toStringO { return "Customer " + id; } // ΠΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Generator: public static Generator<Customer> generatorO { return new Generator<Customer>()
public Customer nextO { return new CustomerO; }
class Teller {
private static long counter = 1; private final long id = counter++; private TellerO {}
public String toStringO { return "Teller " + id; } // Π‘ΠΈΠ½Π³Π»Π΅ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Generator: public static Generator<Teller> generator = new Generator<Teller>() {
public Teller next Π { return new TellerO; }
}:
}
public class BankTeller {
public static void serve(Teller t, Customer c) {
System.out.printin(t + " ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ " + Ρ);
}
public static void main(String[] args) { Random rand = new Random(47); Queue<Customer> line = new LinkedList<Customer>(); Generators.fillOine, Customer, generator 0, 15): List<Teller> tellers = new ArrayList<Teller>(); Generators.filKtellers, Teller.generator, 4); for(Customer Ρ : line)
serve(tellers.get(rand.nextlnt(tellers.size())), c);
}
} /* Output:
Teller
3
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
1
Teller
2
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
2
Teller
3
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
3
Teller
1
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
4
Teller
1
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
5
Teller
3
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
6
Teller
1
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
7
Teller
2
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
8
Teller
3
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
9
Teller
3
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
10
Teller
2
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
11
Teller
4
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
12
Teller
2
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
13
Teller
1
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
14
Teller
1
ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ
Customer
15
*///β’-
Π Customer, ΠΈ Teller ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Generator. Customer ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ generator(), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Generator<Customer>. ΠΠ° ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Generator Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ, Π² Teller ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠΈΠ½Π³Π»Π΅ΡΠ½ΡΠΉ ΠΎΡΠΊΡΡΡΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ generator. ΠΠ±Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² Π²ΡΠ·ΠΎΠ²Π°Ρ fill() Π²Π½ΡΡΡΠΈ main().
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ΅ΡΠΎΠ΄ generator() Π² Customer ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Generator Π² Teller ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ, ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°ΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Β«ΠΎΠ±ΠΎΠ±ΡΠΈΡΡΒ» ΡΡΡ"
ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΈΠ΄ΠΈΠΎΠΌΡ Π½Π΅ ΡΠ΄Π°ΡΡΡΡ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΎ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²ΠΎ, ΠΎΠ½Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ fill().
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
Π ΡΠΈΡΠ»Ρ Π²Π°ΠΆΠ½ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ (List) Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ-ΠΊΠΎΡΡΠ΅ΠΆΠ°ΠΌΠΈ:
//: generics/TupleList.java
// ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
import java.util.*;
import net.mindview util.*;
public class TupleList<A,B.C.D> extends ArrayList<FourTuple<A,B,C.DΒ» {
public static void main(String[] args) {
TupleList<Vehicle, Amphibian. String. Integer> tl =
new TupleList<Vehicle. Amphibian, String. Integer>(); tl.add(TupleTest.hO); tl.add(TupleTest.hO):
for(FourTuple<Vehicle.Amphibian.String.Integer> v tl) System.out.println(i);
}
} /* Output:
( [email protected] [email protected], hi. 47) ( [email protected], [email protected] hi. 47) *///.-
ΠΠ°ΠΏΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΎΠΉ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°), ΠΎΠ΄Π½Π°ΠΊΠΎ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Π±Π΅Π· ΠΈΠ·Π»ΠΈΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Π Π²ΠΎΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ ΡΡΡΠΎΠΈΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ². Π₯ΠΎΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΉ Β«ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π±Π»ΠΎΠΊΒ», ΠΈΡ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΠ΅ΡΡΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½ Ρ ΡΠΎΠ²Π°ΡΠ°ΠΌΠΈ, ΠΏΠΎΠ»ΠΊΠ°ΠΌΠΈ ΠΈ ΡΡΠ΅Π»Π»Π°ΠΆΠ°ΠΌΠΈ:
//. generics/Store.java
// ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° Π±Π°Π·Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ², import java util *. import net.mindview.util.*.
class Product {
private final int id. private String description; private double price;
public Product(int IDnumber, String descr. double price){ id = IDnumber; description = descr, this.price = price; System.out.pri ntln(toString());
}
public String toStringO {
return id + " + description + ", ΡΠ΅Π½Π°: $" + price;
public void priceChange(double change) { price += change,
}
public static Generator<Product> generator = new Generator<Product>() {
private Random rand = new Random(47), public Product next Π {
return new Product(rand nextlnt(lOOO), "Test",
Math round(rand nextDoubleO * 1000 0) + 0 99).
class Shelf extends ArrayList<Product> { public Shelf(int nProducts) {
Generators fill(this. Product generator. nProducts),
class Aisle extends ArrayList<Shelf> {
public AisleCint nShelves, int nProducts) { for(int i = 0; i < nShelves; i++) add(new Shelf(nProducts)),
class CheckoutStand {} class Office {}
public class Store extends ArrayList<Aisle> {
private ArrayList<CheckoutStand> checkouts =
new ArrayList<CheckoutStand>(); private Office office = new OfficeO. public Store(int nAisles, int nShelves, int nProducts) { for(int i = 0; i < nAisles; i++)