List、Set常用方法集合

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());
        }*/
    }
}

  

猜你喜欢

转载自lilixu.iteye.com/blog/2282035