要向集合中添加不重复的对象
但这些对象是每次新生成的,如下
class xx
{
public xx(int i)
{
}
}public class tt
{
public void static main(){
HashSet h=new HashSet();
int i=11000;
while(i-->0)
{
xx x=new xx(得到的整形参数);
if(!h.contains(x))
{
h.add(x);
} }
}
}因为x是每次都新生成的,所以即使它们的参数是一样的,也不是同一个实例,因此h还是把它加进去了,我希望如果已经有相同参数的xx实例了就不添加,望高手指点应该怎么做?问题是h中所添加的对象数应该是很多的,循环判断效率太低,不知道还有什么好办法
但这些对象是每次新生成的,如下
class xx
{
public xx(int i)
{
}
}public class tt
{
public void static main(){
HashSet h=new HashSet();
int i=11000;
while(i-->0)
{
xx x=new xx(得到的整形参数);
if(!h.contains(x))
{
h.add(x);
} }
}
}因为x是每次都新生成的,所以即使它们的参数是一样的,也不是同一个实例,因此h还是把它加进去了,我希望如果已经有相同参数的xx实例了就不添加,望高手指点应该怎么做?问题是h中所添加的对象数应该是很多的,循环判断效率太低,不知道还有什么好办法
解决方案 »
- 谁有Java的编程题目的,理论看多了,想通过实践见识下题目!!
- 这2个if要怎么运行啊?
- 两个数组相乘
- 新手显示图片问题
- 十进制的数在内存中存放的是二进制,可以直接把他读出来吗?java中有直接的方法吗?
- 如何设计用过一次就废弃的号码 就像是手机充值
- JAVA何处有下载??????????????????????????????????
- applet上的按钮能否用双缓冲画出来。我的按钮有点闪。
- cannot resolve symbol错,在线等待
- 请问如何得到ResultSet的行数,并且让它显示在JOptionPane.showMessageDialog中?
- weblogic的taglib乱码问题
- 不定的日期格式字串有什么简单方法转换为java.sql.date呢
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
HashSet<TT> set = new HashSet<TT>();
set.add(new TT(1));
set.add(new TT(2));
System.out.println(set);
set.add(new TT(1));
System.out.println(set); }}class TT{
int a;
public TT(int a){
this.a = a;
}
public int hashCode(){
return a;
}
public boolean equals(Object o){
return o instanceof TT ? ((TT)o).a==a : false;
}
public String toString(){
return ""+a;
}
}
另外HashSet则需要定义hashCode,有关用到Hash容器的一般都把hashCode override比较好