一个关键字对应一个对象数据,可以构建一个简单的两列的表,至于你怎么使用,但就要看具体应用了。我这里有个例子,其中的Hashtable对象data用于保存对象及其个数,对象为关键字,对象个数为数据值。(申明:这个类存在BUG!)
public class Counter{ private Hashtable data = new Hashtable();
private HashSet maxObject = new HashSet();
private int maxCount; public boolean contains(Object object){
return data.containsKey(object);
} public void add(Object object){
int count = 0;
if (contains(object)){
count = count(object);
}
data.put(object,new Integer(++count));
if (maxCount<=count){
if (maxCount<count) maxObject.clear();
maxObject.add(object);
maxCount = count;
}
} public int count(Object object){
return ((Integer)data.get(object)).intValue();
} public void clear(){
data.clear();
maxObject.clear();
maxCount = 0;
} public Object[] maxObject(){
return maxObject.toArray();
} public int maxCount(){
return maxCount;
} public String toString(){
Enumeration keys = data.keys();
Enumeration values = data.elements();
String res = "";
while(keys.hasMoreElements()){
res += keys.nextElement().toString()+"="+values.nextElement().toString()+",";
}
res += "maxObject=[";
Iterator maxKeys = maxObject.iterator();
while(maxKeys.hasNext()) res+=maxKeys.next().toString()+",";
if (res.indexOf(",")>-1)
res = res.substring(0,res.length()-1);
res += "],maxCount="+maxCount;
return res.toString();
} }
public class Counter{ private Hashtable data = new Hashtable();
private HashSet maxObject = new HashSet();
private int maxCount; public boolean contains(Object object){
return data.containsKey(object);
} public void add(Object object){
int count = 0;
if (contains(object)){
count = count(object);
}
data.put(object,new Integer(++count));
if (maxCount<=count){
if (maxCount<count) maxObject.clear();
maxObject.add(object);
maxCount = count;
}
} public int count(Object object){
return ((Integer)data.get(object)).intValue();
} public void clear(){
data.clear();
maxObject.clear();
maxCount = 0;
} public Object[] maxObject(){
return maxObject.toArray();
} public int maxCount(){
return maxCount;
} public String toString(){
Enumeration keys = data.keys();
Enumeration values = data.elements();
String res = "";
while(keys.hasMoreElements()){
res += keys.nextElement().toString()+"="+values.nextElement().toString()+",";
}
res += "maxObject=[";
Iterator maxKeys = maxObject.iterator();
while(maxKeys.hasNext()) res+=maxKeys.next().toString()+",";
if (res.indexOf(",")>-1)
res = res.substring(0,res.length()-1);
res += "],maxCount="+maxCount;
return res.toString();
} }
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货