import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class TestList {
public List studentList;
public static void main(String[] args) {
Classes c = new Classes();
//向集合中逐个添加元素,两种方法add(对象),add(索引,对象)
List list = new ArrayList();
Stu s1 = new Stu("1","张三");
list.add(s1);//向List集合中添加元素
Stu s2 = new Stu("2", "李四");
list.add(s2);
Stu s3 = new Stu("3", "王五");
list.add(0, s3);//向List集合中指定位置添加元素
Stu s4 = new Stu("4", "赵六");
System.out.println("list结合中学生的个数:" + list.size());
list.add(list.size(),s4);//向List集合后面添加元素
//list.add(5,s4);//会报错:java.lang.IndexOutOfBoundsException: Index: 5, Size: 4
//向集合中一次添加多个元素,两种方法addAll(对象集合),addAll(索引,对象集合)
Stu[] stuArray = {new Stu("5", "小名"),new Stu("6", "小红")};
list.addAll(Arrays.asList(stuArray));//向集合后面添加多个对象
Stu[] stuArray2 = {new Stu("7", "tom"),new Stu("8", "jack")};
list.addAll(0, Arrays.asList(stuArray2));
System.out.println("*******获取list中对象的方法一*******");
//增强for循环获取list中对象
for (Object o : list) {
Stu s = (Stu)o; //在没有存入没有泛型的集合中的对象,到了集合中就被转换为了Object对象,所以在获取本集合中的某个对象时需要强制类型转换
System.out.println(s.getId()+ ":" + s.getName());
}
//list.clear();//清除list中的所有对象
System.out.println("*******修改list中对象的方法*******");//使用set方法
list.set(0, new Stu("0", "Alex")); //第0位置上的对象本为tom,通过set方法被修改为了Alex
System.out.println("*******获取list中对象的方法二*******");
//普通for循环获取list中对象
for (int i = 0; i < list.size(); i++) {
Stu s = (Stu) list.get(i);//获取list中某个位置上的对象
System.out.println(s.getId()+ ":" + s.getName());
}
System.out.println("***********删除list中对象**************");
Stu s = (Stu) list.get(0);
list.remove(s);//通过对象删除
list.remove(0);//通过索引删除
list.removeAll(Arrays.asList(stuArray));//删除多个元素
System.out.println("*******获取list中对象的方法三*******");
//使用迭代器获取list中对象
Iterator it = list.iterator();
while(it.hasNext()) {
Stu stu = (Stu)it.next();
System.out.println(stu.getId()+ ":" + stu.getName());
}
System.out.println("*********使用泛型************");
List<Stu> stuList = new ArrayList<Stu>();
stuList.add(s1);
stuList.add(s2);
for (Stu stu : stuList) {//使用泛型就可以去掉类型转换过程了
System.out.println(stu.getId()+ ":" + stu.getName());
}
for (int i = 0; i < stuList.size(); i++) {
Stu stu = stuList.get(i);//获取stuList中某个位置上的对象
System.out.println(stu.getId()+ ":" + stu.getName());
}
}
}
List集合是有序的,可以重复的,所以可以通过下标的形式获取某个元素,可存储多个null值,在获取时要注意判断;
Set集合是无序的,不可以重复(每一个值都是唯一的),所以不可以通过下标的形式获取某个元素,可存储一个null值。
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class TestSet {
public Set<Stu> stuSet;
public static void main(String[] args) {
Set<Stu> stuSet = new HashSet<Stu>();
Stu s1 = new Stu("1","张三");
stuSet.add(s1);//向List集合中添加元素
Stu s2 = new Stu("2", "李四");
Stu s3 = new Stu("3", "王五");
Stu[] stuArray = {s2,s3};
//stuSet.add(0, s3);//会报错的,set是无序的,故没有Set提供的方法中均没有下标的
stuSet.addAll(Arrays.asList(stuArray));
/*stuSet.add(null);set中允许存储null值,但是只能有一个
stuSet.add(null);*/
stuSet.add(s1);
System.out.println(stuSet.size());//结果为3,set是不可重复的,s1已添加进入了
/*Iterator<Stu> it = stuSet.iterator();
while(it.hasNext()) {
Stu stu = it.next(); //输出多次的结果不相同,set无序,所以每次结果可能会不一样
System.out.println(stu.getId()+ ":" + stu.getName());
}*/
}
}