Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit eceb9de

Browse files
Chapter 17 Collections btp170618
* 170537-Generic * 0528-Generic * Chapter-15-Generic-btp0530 * Chapter-16-Arrays-btp170603 * Chapter-17-Collections-btp170618
1 parent 7c331e1 commit eceb9de

File tree

3 files changed

+185
-0
lines changed

3 files changed

+185
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package btp.oneP;
2+
3+
import java.util.ArrayList;
4+
import java.util.LinkedHashSet;
5+
import java.util.Set;
6+
7+
public class CollectionDataTest {
8+
9+
public static void main(String[] args) {
10+
Set<String> set = new LinkedHashSet<String>(new CollectionData<String>(new Government(),7));
11+
set.addAll(CollectionData.list(new Government(), 7));
12+
System.out.println(set);
13+
}
14+
15+
}
16+
17+
class CollectionData<T> extends ArrayList<T> {
18+
public CollectionData(GeneratorN<T> gen,int quantity){
19+
for(int i=0;i<quantity;i++){
20+
this.add(gen.next());
21+
}
22+
}
23+
24+
public static <T> CollectionData<T> list(GeneratorN<T> gen,int quantity){
25+
return new CollectionData<T>(gen,quantity);
26+
}
27+
}
28+
29+
interface GeneratorN<T>{
30+
T next();
31+
}
32+
33+
class Government implements GeneratorN<String>{
34+
String[] foundation = "you are a hero not a coward".split(" ");
35+
private int index;
36+
@Override
37+
public String next() {
38+
// TODO Auto-generated method stub
39+
return foundation[index++];
40+
}
41+
42+
}
43+
44+

src/btp/oneP/FillingLists.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package btp.oneP;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
7+
public class FillingLists {
8+
9+
@SuppressWarnings("unchecked")
10+
public static void main(String[] args) {
11+
List<StringAddress> list = (List) Collections.nCopies(4, new StringAddress("hehe"));
12+
System.out.println(list);
13+
list = new ArrayList<StringAddress>(list);
14+
System.out.println(list);
15+
16+
Collections.fill(list, new StringAddress("xixi"));
17+
System.out.println(list);
18+
}
19+
20+
}
21+
22+
class StringAddress{
23+
private String s;
24+
public StringAddress(String s){
25+
this.s = s;
26+
}
27+
public String toString(){
28+
return super.toString()+" "+s;
29+
}
30+
}

src/btp/oneP/MapDataTest.java

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
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

Comments
 (0)