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));
}
}
}
谁能帮我详细解释下这段代码呢?谢谢啊~~
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));
}
}
}
谁能帮我详细解释下这段代码呢?谢谢啊~~
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最好用下泛型,规范些
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));
}
}
}