|
15 | 15 | */ |
16 | 16 | public class MultiValueMap<V> extends AbstractMap<String, V> { |
17 | 17 |
|
18 | | - |
19 | 18 | transient final List<String> keys = new ArrayList<>(); |
20 | 19 |
|
21 | 20 | transient final List<V> values = new ArrayList<>(); |
22 | 21 |
|
23 | 22 | transient Set<Entry<String, V>> entrySet; |
24 | 23 |
|
| 24 | + static class Itr<V> implements Iterator<Entry<String, V>> { |
| 25 | + |
| 26 | + final Iterator<String> kit; |
| 27 | + final Iterator<V> vit; |
| 28 | + |
| 29 | + public Itr(Iterator<String> kit, Iterator<V> vit) { |
| 30 | + this.kit = kit; |
| 31 | + this.vit = vit; |
| 32 | + } |
| 33 | + |
| 34 | + @Override |
| 35 | + public boolean hasNext() { |
| 36 | + return kit.hasNext() && vit.hasNext(); |
| 37 | + } |
| 38 | + |
| 39 | + @Override |
| 40 | + public Entry<String, V> next() { |
| 41 | + return new SimpleEntry<>(kit.next(), vit.next()); |
| 42 | + } |
| 43 | + |
| 44 | + @Override |
| 45 | + public void remove() { |
| 46 | + kit.remove(); |
| 47 | + vit.remove(); |
| 48 | + } |
| 49 | + |
| 50 | + } |
| 51 | + |
25 | 52 | /** |
26 | 53 | * 键值对集合类 |
27 | 54 | */ |
28 | 55 | class EntrySet extends AbstractSet<Entry<String, V>> { |
29 | 56 |
|
30 | 57 | @Override |
31 | 58 | public Iterator<Entry<String, V>> iterator() { |
32 | | - Iterator<String> nit = keys.iterator(); |
33 | | - Iterator<V> vit = values.iterator(); |
34 | | - return new Iterator<>() { |
35 | | - |
36 | | - @Override |
37 | | - public boolean hasNext() { |
38 | | - return nit.hasNext() && vit.hasNext(); |
39 | | - } |
40 | | - |
41 | | - @Override |
42 | | - public Entry<String, V> next() { |
43 | | - return new SimpleEntry<>(nit.next(), vit.next()); |
44 | | - } |
45 | | - |
46 | | - @Override |
47 | | - public void remove() { |
48 | | - nit.remove(); |
49 | | - vit.remove(); |
50 | | - } |
51 | | - }; |
| 59 | + return new Itr<>(keys.iterator(), values.iterator()); |
52 | 60 | } |
53 | 61 |
|
54 | 62 | @Override |
|
0 commit comments