import java.util.*;public class aa {
   
    
    public static void main(String[] args)  {
        
     SortedSet set=new TreeSet(new Comparator()
     { public int compare(Object o1, Object o2) {
if(Integer.parseInt(o1.toString())>Integer.parseInt(o2.toString()))
return 1;
else
return
-1;
}
    
     });
      set.add("1");
      set.add("5");
      set.add("3");
      System.out.println(set);
      set.remove("1");//为什么删除不了
      System.out.println(set);}
}

解决方案 »

  1.   

    因为你的那个 compare 没有=0的返回值,所以 remove无法找到和你要删除的"1"相同的。
      

  2.   

    直接return Integer.parseInt(o1.toString()) - Integer.parseInt(o2.toString();这样就行了。
      

  3.   

    你这个comparator比较的时候不是大于就是小于,怎么可能删除public int compare(Object o1, Object o2) {
    return (Integer.parseInt(o1.toString()) - Integer.parseInt(o2
    .toString()));
    }
      

  4.   

    此问题我整理于 http://www.java2000.net/p9543
      

  5.   

    或者不要用comparator了,你这个字符串也不是很特殊SortedSet set = new TreeSet();
    set.add("1");
    set.add("5");
    set.add("3");
    System.out.println(set);
    set.remove("1");
    System.out.println(set);
      

  6.   

    return Integer.parseInt(o1.toString()) - Integer.parseInt(o2.toString());
      

  7.   


    import java.util.*; public class aa { 
      
        
        public static void main(String[] args)  { 
            
        SortedSet set=new TreeSet(new Comparator(){

        public int compare(Object o1, Object o2) {
    if (Double.parseDouble(o1.toString())
    >Double.parseDouble(o2.toString()))
    return 1;
    else if(Double.parseDouble(o1.toString())
                   <Double.parseDouble(o2.toString()))
    return -1;
    else 
    return 0;


        }); 
          set.add("1"); 
          set.add("5"); 
          set.add("3"); 
          System.out.println(set);
          set.remove("1");//为什么删除不了 
          System.out.println(set);     } 
    }
      

  8.   


    为什么没有=0的返回值   remove无法移除