利用hashtable计算Basebean对象重复的次数,请高手帮忙解答,分析原因()
public static void display(BaseBean []a) {
Hashtable<BaseBean, Integer> h = new Hashtable<BaseBean, Integer>();
Integer value;
for (int i = 0; i < a.length; i++) {
value = h.get(a[i]);
if (value != null)
value++;
else{
value = 1;
}
h.put(a[i], value);
}
}
// 下面是类的定义package com.tiger.bean;public class BaseBean {
private int[] array;
private int[] single; BaseBean() {
}; BaseBean(int a[], int b[]) {
this.array = a;
this.single = b;
} public int[] getArray() {
return array;
} public void setArray(int[] array) {
this.array = array;
} public int[] getSingle() {
return single;
} public void setSingle(int[] single) {
this.single = single;
}
@Override
public String toString() {
String s = "";
for (int i = 0; i < this.array.length; i++) {
s = s + array[i] + " ";
}
s = s + " + ";
for (int i = 0; i < this.single.length; i++) {
s = s + single[i] + " ";
}
return s; } @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + this.array.hashCode();
result = prime * result + this.single.hashCode();
return result;
} @Override
public boolean equals(Object obj) {
boolean b = false;
if (obj instanceof BaseBean) {
BaseBean bb = (BaseBean) obj;
int[] a = this.array;
int[] c = bb.array; if (IntArrayEqual.arrayEqual(a, c)
&& IntArrayEqual.arrayEqual(this.single, bb.single)) {
b = true;
} }
return b;
}}
public static void display(BaseBean []a) {
Hashtable<BaseBean, Integer> h = new Hashtable<BaseBean, Integer>();
Integer value;
for (int i = 0; i < a.length; i++) {
value = h.get(a[i]);
if (value != null)
value++;
else{
value = 1;
}
h.put(a[i], value);
}
}
// 下面是类的定义package com.tiger.bean;public class BaseBean {
private int[] array;
private int[] single; BaseBean() {
}; BaseBean(int a[], int b[]) {
this.array = a;
this.single = b;
} public int[] getArray() {
return array;
} public void setArray(int[] array) {
this.array = array;
} public int[] getSingle() {
return single;
} public void setSingle(int[] single) {
this.single = single;
}
@Override
public String toString() {
String s = "";
for (int i = 0; i < this.array.length; i++) {
s = s + array[i] + " ";
}
s = s + " + ";
for (int i = 0; i < this.single.length; i++) {
s = s + single[i] + " ";
}
return s; } @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + this.array.hashCode();
result = prime * result + this.single.hashCode();
return result;
} @Override
public boolean equals(Object obj) {
boolean b = false;
if (obj instanceof BaseBean) {
BaseBean bb = (BaseBean) obj;
int[] a = this.array;
int[] c = bb.array; if (IntArrayEqual.arrayEqual(a, c)
&& IntArrayEqual.arrayEqual(this.single, bb.single)) {
b = true;
} }
return b;
}}
所以要比较数组,得一个个的比较数组中元素的值或hashCode