Java集合框架|Collection体系和核心源码详解(一)

注:详解核心源码 = 逐句解释源码 + 分情况举例说明 + 必要辅助图解

Collection体系

Collection体系 注意事项

  • List接口:有序(指添加的顺序和遍历的顺序是一致的)、有下标、元素可重复。
  • Set接口:无序(指添加的顺序和遍历的顺序是不一致的)、无下标、元素不能重复。

Collection父接口

Collection方法

Collection案例实现

public class CollectionTest {
   
    public static void main(String[] args) {
   
        Collection collection=new ArrayList();
        System.out.println("-----isEmpty------");
        //isEmpty 判断集合是否有元素,有返回true,没有返回false
        System.out.println(collection.isEmpty());

        System.out.println("-----add------");
        //add 往集合中添加元素
        Student s1=new Student("张三",18);
        Student s2=new Student("李四",19);
        Student s3=new Student("王五",20);
        Student s4=new Student("孙六",21);
        Student s5=new Student("赵七",22);
        collection.add(s1);
        collection.add(s2);
        collection.add(s3);
        collection.add(s4);
        collection.add(s5);
        System.out.println(collection);

        System.out.println("-----size------");
        //size 返回集合中元素个数
        System.out.println(collection.size());

        System.out.println("-----remove------");
        collection.remove(s3);
        System.out.println(collection);

        System.out.println("------removeAll-----");
        //colletion.removeAll(Collection C)
        //从collection中删除那些也包含在C中的所有元素
        Student s6=new Student("刘八",23);
        Collection collection2=new ArrayList();
        collection2.add(s4);
        collection2.add(s6);
        collection.removeAll(collection2);
        System.out.println(collection);

        System.out.println("------retainAll-----");
        //colletion.retainAll(Collection C)
        //仅保留collection中那些也包含在C的元素
        //没有一个交集返回true,有交集但不全交也返回true,而两个集合相等的时候,返回false
        Student s7=new Student("林九",24);
        Collection collection3=new ArrayList();
        collection3.add(s7);
        collection3.add(s1);
        collection3.add(s2);
        System.out.println(collection);
        System.out.println("有交集:"+collection.retainAll(collection3));
        Collection none=new ArrayList();
        Collection test=new ArrayList();
        test.addAll(collection);
        System.out.println("没有交集:"+test.retainAll(none));
        test.addAll(collection);
        System.out.println("两个集合相等:"+test.retainAll(test));

        System.out.println("------contains-----");
        //contains 是否包含该元素 是返回true 不是返回false
        System.out.println(collection.contains(s2));
        //如果conrtains(新的对象) 那么就相当于开辟了新的空间,与原来的s2不同
        System.out.println(collection.contains(new Student("李四",19)));

        System.out.println("------containsAll-----");
        //colletion.containsAll(Collection C)
        //若collection包含T所有元素返回true,反之返回false
        Collection collection4=new ArrayList();
        collection4.add(s1);
        System.out.println(collection.containsAll(collection4));

        System.out.println("------equals and hashcode-----");
        //equals 判断两个集合的每个元素的地址是否相等
        System.out.println(collection);
        Collection collection5=new ArrayList();
        collection5.add(s1);
        collection5.add(new Student("李四",19));
        Collection collection6=new ArrayList();
        collection6.add(s1);
        collection6.add(s2);
        System.out.println("collection"+collection.hashCode());
        System.out.println("collection5"+collection5.hashCode());
        System.out.println("collection6"+collection6.hashCode());
        System.out.println(collection.equals(collection5));
        System.out.println(collection.equals(collection6));

        System.out.println("------addAll-----");
        //colletion.addAll(Collection C)
        //colletion中添加C中所有元素
        collection.addAll(collection2);
        System.out.println(collection);

        System.out.println("------遍历-----");
        //1.增强for遍历
        for (Object o : collection) {
   
            Student stu=(Student) o;
            System.out.printf("%s ",stu.getName());
        }
        System.out.printf("\n");
        //2.迭代器遍历
        Iterator it=collection.iterator();
        while (it.hasNext()){
   
            Student student = (Student) it.next();
            System.out.printf("%s ",student.getName());
            if (student.getName().equals("刘八")){
   
                it.remove();
            }
        }
        System.out.printf("\n");
        System.out.println(collection);

        System.out.println("------toArray-----");
        //toArray() 将集合变为数组
        //toArray(T []) 将集合变为指定T数组
        Student[] t=new Student[5];
        Student[] arr = (Student[]) collection.toArray(t);
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值