📄 numberer.java
字号:
package edu.stanford.nlp.util;import java.util.*;import java.io.Serializable;/** Gives a unique integer serial numbers to a family of objects, identified * by a name space. * @author Dan Klein */public class Numberer implements Serializable { private static Map numbererMap = new HashMap(); public static Map getNumberers() { return numbererMap; } public static void setNumberers(Map numbs) { numbererMap = numbs; } public static Numberer getGlobalNumberer(String type) { Numberer n = (Numberer) numbererMap.get(type); if (n==null) { n = new Numberer(); numbererMap.put(type, n); } return n; } public static int number(String type, Object o) { return getGlobalNumberer(type).number(o); } public static Object object(String type, int n) { return getGlobalNumberer(type).object(n); } public static int translate(String sourceType, String targetType, int n) { return getGlobalNumberer(targetType).number(getGlobalNumberer(sourceType).object(n)); } private int total; private Map intToObject; private Map objectToInt; private MutableInteger tempInt; private boolean locked = false; public int total() { return total; } public void lock() { locked = true; } public boolean hasSeen(Object o) { return objectToInt.keySet().contains(o); } public int number(Object o) { MutableInteger i = (MutableInteger)objectToInt.get(o); if (i == null) { if (locked) { throw new NoSuchElementException(); } i = new MutableInteger(total); total++; objectToInt.put(o,i); intToObject.put(i,o); } return i.intValue(); } public Object object(int n) { tempInt.set(n); return intToObject.get(tempInt); } public String toString() { StringBuffer sb = new StringBuffer(); sb.append("["); for (int i=0; i<total; i++) { sb.append(i); sb.append("->"); sb.append(object(i)); if (i < total-1) sb.append(", "); } sb.append("]"); return sb.toString(); } public Numberer() { total = 0; tempInt = new MutableInteger(); intToObject = new HashMap(); objectToInt = new HashMap(); } private static final long serialVersionUID = 1L;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -