请问用Hashset里的remove方法时,删掉的对象为何不是最新add到hashset里的对象?我要做的小程序是把一些string对象放到hashset里去,在add一个对象之后,如果发现hashset的size不变时(说明原来的hashset里已经有相同的对象)则把该对象删除,请问该怎么做?谢谢!我自己写的代码如下:
BufferedReader br = new BufferedReader(new FileReader("c:/lib.txt"));
BufferedReader si = new BufferedReader(new InputStreamReader(System.in));

String str;
String bsp = si.readLine();
String[] example = bsp.split(" ");
TreeSet ts = new TreeSet();
int size=0;
int laterSize=0;
while ((str = br.readLine()) != null) 
{
String[] stringArray = str.split(",");
if (example[2].equals(stringArray[2])) 
{
   size=ts.size();
   ts.add(stringArray[1]);
   laterSize=ts.size();
if(size==laterSize){
ts.remove(stringArray[1]/*br.readLine()*/);
}else continue;
}else continue;
}

Iterator Iter = ts.iterator();
while (Iter.hasNext()) {
System.out.println(Iter.next());
}
System.out.println("---------------------------------------");

解决方案 »

  1.   

    你为何要如此判断TreeSet ts = new TreeSet();
    String st = new String("aaa");
    if(!ts.contains()) {
    ts.add(st);
    }就好了
      

  2.   

    weimenren(愚人码头)我所希望的是:比如如果集合里已经有一个aa,现在又要加入一个aa的话,我不但这个不加而且把之前在集合里的aa删除.而按您给的只是会不加当前这个,而不会把之前的删除.请再指点指点!
      

  3.   

    hashSet是set接口的实现类 Set类是不能存放重复对象的集合类 
    所以当你添加一个对象时,hashset会自己判断里面是否有重复的,所以才出现你删除原来已经有的对象
      

  4.   

    非常简单啦!if(!ts.contains()) {
    ts.add(st);
    } else {
    ts.remove(st);
    }