1
+ package btp .oneP ;
2
+
3
+ import java .util .Iterator ;
4
+ import java .util .LinkedHashMap ;
5
+
6
+ public class MapDataTest {
7
+
8
+ public static void main (String [] args ) {
9
+ System .out .println (MapData .map (new Letters (), 11 ));
10
+
11
+ System .out .println (MapData .map (new Letters (), "Pop" ));
12
+ }
13
+
14
+ }
15
+
16
+
17
+ class PairN <K ,V >{
18
+ public final K key ;
19
+ public final V value ;
20
+ public PairN (K k ,V v ){
21
+ this .key = k ;
22
+ this .value = v ;
23
+ }
24
+ }
25
+
26
+ class MapData <K ,V > extends LinkedHashMap <K ,V >{
27
+ public MapData (GeneratorN <PairN <K ,V >> gen ,int quantity ){
28
+ for (int i =0 ;i <quantity ;i ++){
29
+ PairN <K ,V > p = gen .next ();
30
+ this .put (p .key , p .value );
31
+ }
32
+ }
33
+
34
+ public MapData (GeneratorN <K > genK ,GeneratorN <V > genV ,int quantity ){
35
+ for (int i =0 ;i <quantity ;i ++){
36
+ this .put (genK .next (), genV .next ());
37
+ }
38
+ }
39
+
40
+ public MapData (GeneratorN <K > genK ,V value ,int quantity ){
41
+ for (int i =0 ;i <quantity ;i ++){
42
+ this .put (genK .next (), value );
43
+ }
44
+ }
45
+
46
+ public MapData (Iterable <K > genK ,GeneratorN <V > genV ){
47
+ for (K key :genK ){
48
+ this .put (key ,genV .next ());
49
+ }
50
+ }
51
+
52
+ public MapData (Iterable <K > genK , V value ){
53
+ for (K key :genK ){
54
+ this .put (key , value );
55
+ }
56
+ }
57
+
58
+ public static <K ,V > MapData <K ,V > map (GeneratorN <PairN <K ,V >> gen ,int quantity ){
59
+ return new MapData <K ,V >(gen ,quantity );
60
+ }
61
+
62
+ public static <K ,V > MapData <K ,V > map (GeneratorN <K > genK ,GeneratorN <V > genV ,int quantity ){
63
+ return new MapData <K ,V >(genK ,genV ,quantity );
64
+ }
65
+
66
+ public static <K ,V > MapData <K ,V > map (GeneratorN <K > genK ,V value ,int quantity ){
67
+ return new MapData <K ,V >(genK ,value ,quantity );
68
+ }
69
+
70
+ public static <K ,V > MapData <K ,V > map (Iterable <K > genK ,GeneratorN <V > genV ){
71
+ return new MapData <K ,V >(genK ,genV );
72
+ }
73
+
74
+ public static <K ,V > MapData <K ,V > map (Iterable <K > genK ,V value ){
75
+ return new MapData <K ,V >(genK ,value );
76
+ }
77
+ }
78
+
79
+ class Letters implements GeneratorN <PairN <Integer ,String >>,
80
+ Iterable <Integer >{
81
+
82
+ private int size = 9 ;
83
+ private int number = 1 ;
84
+ private char letter = 'A' ;
85
+
86
+ @ Override
87
+ public PairN <Integer , String > next () {
88
+ return new PairN <Integer ,String >(number ++,"" +letter ++);
89
+ }
90
+
91
+ @ Override
92
+ public Iterator <Integer > iterator () {
93
+ // TODO Auto-generated method stub
94
+ return new Iterator <Integer >(){
95
+
96
+ @ Override
97
+ public boolean hasNext () {
98
+ // TODO Auto-generated method stub
99
+ return number < size ;
100
+ }
101
+
102
+ @ Override
103
+ public Integer next () {
104
+ // TODO Auto-generated method stub
105
+ return number ++;
106
+ }
107
+
108
+ };
109
+ }
110
+
111
+ }
0 commit comments