public class TestSetList { public static void main(String[] args) {
HashSet set1 = new HashSet();
addRange(set1,1);
ArrayList list1 = new ArrayList();
addRange(list1,2);
TreeSet set2 = new TreeSet();
addRange(set2,3);
LinkedList list2 = new LinkedList();
addRange(list2,5);

set1.removeAll(list1);
list1.addAll(set2);
list2.addAll(list1);
set1.removeAll(list2);

System.out.println(set1);
} private static void addRange(Collection col, int step) {
for (int i = step*2; i <= 25; i+=step) {
col.add(new Integer(i));
}
}
}
谁能帮我详细解释下这段代码呢?谢谢啊~~

解决方案 »

  1.   


    public class TestSetList { public static void main(String[] args) {
    HashSet set1 = new HashSet();
    addRange(set1, 1);//调用addRang方法,向set1中添加Integer对象,根据传入的参数,会向
                      //set1中添加Integer(2)....Integer(25);
    ArrayList list1 = new ArrayList();
    addRange(list1, 2);//调用addRang方法,向list1中添加Integer对象,根据传入的参数,会向
                               //list1中添加Integer(4),Integer(6)....Integer(24);
    TreeSet set2 = new TreeSet();
    addRange(set2, 3);//调用addRang方法,向set2中添加Integer对象,根据传入的参数,会向
                              //set2中添加Integer(6),Integer(9)....Integer(24);
    LinkedList list2 = new LinkedList();
    addRange(list2, 5);//调用addRang方法,向list2中添加Integer对象,根据传入的参数,会向
                               //list2中添加Integer(10),Integer(15),Integer(20),Integer(25); set1.removeAll(list1);//移除set1中那些包含在list1中的元素
    list1.addAll(set2);//向list1中添加set2中的所有元素
    list2.addAll(list1);//向list2中添加list1中的所有元素
    set1.removeAll(list2);//移除set1中那些包含在list2中的元素 System.out.println(set1);
    } private static void addRange(Collection col, int step) {
    for (int i = step * 2; i <= 25; i += step) {
    col.add(new Integer(i));//像集合中添加Integer对象
    }
    }
    }LZ最好用下泛型,规范些
      

  2.   

    泛型来了import java.util.ArrayList;
    import java.util.Collection;
    import java.util.HashSet;
    import java.util.LinkedList;
    import java.util.TreeSet;
    public class TestSetList { public static void main(String[] args) { 
    HashSet<Integer> set1 = new HashSet<Integer>(); 
    addRange(set1,1); 
    //Set不保存重复的元素,HashSet是Set接口的一个实现,而HashSet又是用的散列函数进行排序,所以2-25是乱着排放的
    //set1:[15, 4, 19, 8, 23, 11, 16, 18, 3, 7, 12, 22, 17, 2, 13, 9, 21, 6, 20, 14, 25, 24, 10, 5]
    System.out.println("set1:"+set1);
    ArrayList<Integer> list1 = new ArrayList<Integer>(); 
    addRange(list1,2); 
    //List必须按照插入的顺序保存元素,而ArrayList是List接口的一个实现,用于随机访问元素
    //list1:[4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]
    System.out.println("list1:"+list1);
    TreeSet<Integer> set2 = new TreeSet<Integer>(); 
    addRange(set2,3); 
    //TreeSet是Set接口的另一个实现,它将元素存储在红黑树数据结构中
    //set2:[6, 9, 12, 15, 18, 21, 24]
    System.out.println("set2:"+set2);
    LinkedList<Integer> list2 = new LinkedList<Integer>(); 
    addRange(list2,5); 
    //LinkedList是List接口的另一个实现,用于对list进行插入和删除操作
    //list2:[10, 15, 20, 25]
    System.out.println("list2:"+list2);
    set1.removeAll(list1); 
    //从set1里把list1里包含相同的元素删除
    //set1:[15, 19, 23, 11, 3, 7, 17, 2, 13, 9, 21, 25, 5]
    System.out.println("set1:"+set1);
    list1.addAll(set2); 
    //将set2里的所有元素全部插入到list1中
    //list1:[4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 6, 9, 12, 15, 18, 21, 24]
    System.out.println("list1:"+list1);
    list2.addAll(list1); 
    //再把list1里的元素又全部插入到list2中
    //list2:[10, 15, 20, 25, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 6, 9, 12, 15, 18, 21, 24]
    System.out.println("list2:"+list2);
    set1.removeAll(list2); 
    //最后从set1中把list2里包含相同的元素删除
    //set1:[19, 23, 11, 3, 7, 17, 2, 13, 5]
    System.out.println("set1:"+set1);

    }  private static void addRange(Collection<Integer> col, int step) { 
    for (int i = step*2; i <= 25; i+=step) { 

    col.add(new Integer(i)); 

    }
    }