Demo18_集合框架

package test09;

import java.util.ArrayList;
import java.util.Collection;

public class Demo18_集合框架 {

    @SuppressWarnings("rawtypes")
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        /*需求1:20个学生   用student描述 创建student对象
         * 既然对象很多先进行存储----创建数组
         * Student[] stus = new Student[20];
         * 
         * 需求2:又来了一个新学员
         * 数组长度固定,原来的容器不能使用
         * 
         * 解决方式: 创建一个新数组,将原来的数组复制到新数组中
         * 过于复杂; Java中提供了解决问题的对象----->集合
         * 
         * 数据多了需要 存储,需要容器,而数据的个数不确定,无法使用数组,所以使用Java中的另一个容器--集合
         * 
         * 集合和数组的区别?
         * 数组的长度是固定的
         * 集合的长度是可变的 
         * 
         * 数组中存储的都是同一类型的元素,可以存储数据类型值
         * 集合存储的都是对象,而对象的类型可以不一致
         * 
         * 什么时候使用?
         * 当对象多的时候,先进行存储
         * Java最早版本1.0中,提供的容器很少
         * 1.2之后为了更多的需求,出现了集合框架。有了更多的容器
         * 完成了不同的需求
         * 
         * 这些容器怎么区分呢
         * 区分方式:没一个容器的数据结构(数据存储的一种方式)不同
         * 
         * 在不断向上的抽取过程中出现体现,形成了集合框架
         * 最顶层:collection接口     定义了集合体系中最共性的功能
         * 学习体系: 看顶层,用底层
         * 
         * 了解顶层collection
         * 容器功能:添加    删除
         *  */
        Collection coll = new ArrayList() ;// 多态  向上转型  提高扩展性隐藏子类型     目前演示collection的方法,不关心子类的对象
        collectionDemo(coll);
        Collection c1 = new ArrayList();
        Collection c2 = new ArrayList();
        collectionDemo2(c1,c2);
    }
//  演示collection中的带all的方法
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static void collectionDemo2(Collection c1,Collection c2){
        System.out.println("-------往两个集合中添加元素-------"); 
        c1.add("abc1");
        c1.add("abc2");
        c1.add("abc3");

        c2.add("abc1");
        c2.add("abc5");
        c2.add("abc6");
        System.out.println(c1);
        System.out.println(c2);
        System.out.println("-------添加所有c2的元素到c1中-------");  
        c1.addAll(c2);
        System.out.println(c1);
        System.out.println(c2);
        System.out.println("-------包含问题-------");
        boolean b = c1.containsAll(c2);//指c2中的每一个元素都包含在c1中
        System.out.println("b="+b);//true  因为这时候已经将c2的元素到c1中
        System.out.println("-------删除所有元素-------");
        c1.removeAll(c2);//删除c1中所有的与c2相同的元素
        System.out.println(c1);
        c1.retainAll(c2);//保留了c1中与c2相同的元素
    }
//演示collection中的一般方法
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static void collectionDemo(Collection coll) {
        System.out.println("-------往集合中添加元素add(Object)-------");
        coll.add("abc1");
        coll.add("abc2");
        coll.add("abc3");
        System.out.println(coll);//[abc1, abc2, abc3]
        System.out.println("-------删除元素-------");
        coll.remove("abc1");
        System.out.println(coll);
        System.out.println("-------判断是否包含-------");
        System.out.println(coll.contains("abc2"));
        System.out.println("-------集合元素个数-------");
        int a = coll.size();
        System.out.println(a);
    }


}

猜你喜欢

转载自blog.csdn.net/mingxu_W/article/details/81978091