-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCharacterPool.java
More file actions
77 lines (63 loc) · 1.56 KB
/
CharacterPool.java
File metadata and controls
77 lines (63 loc) · 1.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package com.framehawk.roman;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
/**
* This Singleton class defines Roman numbers.
* @author Vikram
*
*/
public class CharacterPool {
private Map<Character,Integer> charMap;
private Map<Character, Integer> charSortedMap;
private static CharacterPool charPoolInstance = null;
private CharacterPool() {
populateCharMap();
}
private void populateCharMap() {
charMap = new HashMap<Character, Integer>();
charSortedMap = new TreeMap<Character, Integer>(new CustomComparator(charMap));
for(RomanCharType c : RomanCharType.values()) {
charMap.put(c.getRomanChar(), c.getFactor());
}
charSortedMap.putAll(charMap);
}
/**
*
* @author Vikram
* This class declares Roman Numerals.
*/
public enum RomanCharType {
one('I',1),
two('V',5),
three('X',10),
four('L',50),
five('C',100),
six('D',500),
seven('M',1000);
private final int factor;
private final char romanChar;
RomanCharType(char romanChar,int factor) {
this.romanChar = romanChar;
this.factor = factor;
}
public int getFactor() {
return factor;
}
public char getRomanChar() {
return romanChar;
}
}
public Map<Character, Integer> getCharSortedMap() {
return charSortedMap;
}
public static CharacterPool getCharPoolInstance() {
if(charPoolInstance == null) {
charPoolInstance = new CharacterPool();
}
return charPoolInstance;
}
public Map<Character, Integer> getCharMap() {
return charMap;
}
}