最好不要用序数来索引数组,而要使用EnumMap

EnumMap源代码学习

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
 public V put(K key, V value) {
typeCheck(key);

int index = key.ordinal();
Object oldValue = vals[index];
vals[index] = maskNull(value);
if (oldValue == null)
size++;
return unmaskNull(oldValue);
}

public V remove(Object key) {
if (!isValidKey(key))
return null;
int index = ((Enum<?>)key).ordinal();
Object oldValue = vals[index];
vals[index] = null;
if (oldValue != null)
size--;
return unmaskNull(oldValue);
}

public V get(Object key) {
return (isValidKey(key) ?
unmaskNull(vals[((Enum<?>)key).ordinal()]) : null);
}

public boolean containsKey(Object key) {
return isValidKey(key) && vals[((Enum<?>)key).ordinal()] != null;
}

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

package com.canal.demo;

import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;

import java.util.EnumMap;
import java.util.List;

public class ZookeeperHello {



private static enum Operation{
ADD(2),
DIVIDE(4),
MULTIPLY(8),
SUB(16);

private int code;

Operation(int code) {
this.code = code;
}

public int getCode() {
return code;
}

}


public static void main(String[] args) {

EnumMap<Operation,List<String>> map =new EnumMap<Operation, List<String>>(Operation.class);

map.put(Operation.ADD, Lists.newArrayList("ADD","添加"));
map.put(Operation.MULTIPLY, Lists.newArrayList("MULTIPLY","乘法"));

System.out.println(JSON.toJSONString(map));


}
}