public class B {
public static void main(String[] aa) {
Set<Integer> set = new TreeSet<Integer>();
List<Integer> list = new ArrayList<Integer>();
for (int i = -3; i < 3; i++) {
set.add(i);
list.add(i);
}
for (int i = 0; i < 3; i++) {
set.remove(i);
list.remove(i);
}
System.out.println(set + " " + list);
}
}

解决方案 »

  1.   

    对了,谁能讲一下set,list底层怎么实现的不?
      

  2.   

    郁闷,做错了。
    list移除要考虑下标的变化。
      

  3.   

    这个[-2,0,2]基本上搞清楚了!
    删除了一个元素以后,List后面的元素往前移了!!!
      

  4.   

    set的remove是移出的对象,会根据对象的hashcode和equals方法进行操作,再注意一个问题就是Integer中缓存了-128到+127之间的Integer对象。
    list就是根据下标进行remove,没什么特殊的。
      

  5.   

    List的底层是数组实现的,Set是哈希表楼主去研究源码啊,就明白啦
      

  6.   

    TreeSet这个是排序。set本身是无序的,就像一个圆,在每段弧上放了一些东西。这些东西的位置都是等效的。但是使用treeset后,就是按升序排列。{-3,-2,-1,0,1,2},调用remove 方法后,依次删除0,1,2元素,余下的就是-3 -2 -1,输出为[-3,-2,-1] 
    list是有序的。第一个放入的记顺序0,第二个放入的记序为1依次类推。放完后的顺序是:-3 -2 -1 0 1 2
    第一次移remove(0),移除的是-3,余下:-2 -1 0 1 2 ,下标依次降1。第二次移除remove(1),移除-1,余下:-2 0 1 2第三次次移除1,因此余下的元素是:-2 0 2
    所以两个的打印结果是:[-3,-2,-1] [-2,0,2]
      

  7.   

    自己顺便编了一道,呵呵。
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Set;
    import java.util.TreeSet;public class Main {    public static void main(String[] aa) {
            Set<Integer> set = new TreeSet<Integer>();
            List<Integer> list = new ArrayList<Integer>();
            for (int i = 128; i < 135; i++) {
                set.add(i);
            }
            for (int i = 128; i < 130; i++) {
                set.remove(i);
            }
            System.out.println(set);
        }
    }
      

  8.   


    好,顺带学习下Set。
    我的Java用哪学哪,呵呵~~总结下考点:
    Set放的是Object(Integer)对象,remove的是对象。
    List其实就是Object Array结构,不过有点像栈的特点,remove的是index内的对象。Java和C/C++通用哦,原来差不多,不过就是新发明一些新的武器/工具/方法而已。
      

  9.   

    ArrayList LinkedList底层是用链表做的吧~
      

  10.   

    不會,不知那些Set為何物,哇,這樣筆試應該很慘吧,萬一沒用過那個東西,那麼去筆試豈不是要把jdk api doc都要背啊...
      

  11.   

    ArrayList内部就是一个array,线性表,所以删除和插入元素都要移动
      

  12.   

    TreeSet<Integer> treeSet = new TreeSet<Integer>();
    treeSet.add(5);
    treeSet.add(4);
    treeSet.add(7);
    treeSet.add(2);
    System.out.println(treeSet);
    System.out.println(treeSet.remove(1));
    treeSet.remove(4);
    System.out.println(treeSet);
    [2, 4, 5, 7]
    false
    [2, 5, 7]