📄 unserialcache.java
字号:
package com.wireless.sms.gwif.smsagent.func;
import java.util.*;
import com.wireless.sms.pub.entity.MT;
public class UnserialCache {
private static int SIZE = 1000;
private boolean ok;
private InnerMap queueMap = new InnerMap(SIZE);
private InnerMap keyMap = new InnerMap(SIZE);
private Vector validKey = new Vector();
public boolean isOk() {
return ok;
}
public void addMT(MT mt){
if( queueMap.containsKey(mt.getMoID()) ){
Map tmpMap = (Map)queueMap.get(mt.getMoID());
tmpMap.put(mt.getCurPos()+"", mt);
}
else{
Map tmpMap = new HashMap();
tmpMap.put(mt.getCurPos()+"", mt);
queueMap.put(mt.getMoID(), tmpMap);
}
}
public void addKey(MT mt){
//本来不需要加这个判断的,因为只有在第一条来的时候才加入,但由于应用可能出错,以做兼容
if( keyMap.containsKey(mt.getMoID()) ){
int count = Integer.parseInt((String)keyMap.get(mt.getMoID()));
keyMap.put(mt.getMoID(), (count - 1) + "");
}
else{
keyMap.put(mt.getMoID(), (mt.getTotal()-1)+"");
}
if( queueMap.containsKey(mt.getMoID()) ){
ok = true;
validKey.add(mt.getMoID());
if( validKey.size() > SIZE ){
validKey.removeElementAt(0);
}
}
}
public boolean isNext(MT mt){
if( keyMap.containsKey(mt.getMoID()) ){
int count = Integer.parseInt((String)keyMap.get(mt.getMoID()));
if (count <= 1) {
keyMap.remove(mt.getMoID());
queueMap.remove(mt.getMoID());
validKey.remove(mt.getMoID());
} else {
keyMap.put(mt.getMoID(), (count - 1) + "");
}
return true;
}
return false;
}
public MT getMT(){
MT mt = null;
if( validKey.size() > 0 ){
String moID = (String)validKey.elementAt(0);
Map tmpMap = (Map)queueMap.get(moID);
if( tmpMap.size() > 0 ){
String key = (String)tmpMap.keySet().iterator().next();
mt = (MT)tmpMap.get(key);
tmpMap.remove(key);
}
if( tmpMap.isEmpty() ){
validKey.remove(0);
ok = false;
}
}
return mt;
}
class InnerMap extends LinkedHashMap {
private static final long serialVersionUID=1L;
private int size = 0;
public InnerMap(int size) {
this.size = size;
}
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > size;
}
}
public String toString(){
return
"queueMap.size - " + queueMap.keySet().size() + " " +
"queueMap.innerMap.size - " +
(queueMap.keySet().size()>0?((Map)queueMap.get(queueMap.keySet().iterator().next())).size():0) +
" keyMap.size - " + keyMap.keySet().size() +
" validKey.size - " + validKey.size() + " ok - " + ok;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -