java -- 初识集合

来源:互联网 发布:vcm仿真实验软件 编辑:程序博客网 时间:2024/06/10 19:08

集合的创建是相对于数组而言的,在使用数组的时候,创建之后数组的长度就已经被固定了,无法改变长度 ,而且存放的都是相同的类型, 所以为了方便使用, 我们创建了集合

数组 和 集合 的区别
数组
a.数组只能村相同数据类型的 – > 可以存引用数据类型 和 基本数据类型
b.数组一旦给定了长度,数组就不改变长度
集合
a.集合中 只能存引用数据类型(对象), 虽然只能保存引用类型 但是 也可以通过自动装箱来保存基本数据类型
b.集合的长度是可以发生变化的
那什么时候选用数组, 什么时候选用集合呢??
当数据固定的时候选用数组 当数据不固定的时候选用集合

在使用集合的时候, 我们选择用集合类来实现,java API提供了多种集合的实现.
这里写图片描述

collection是集合最基本的集合接口
总结下部分实现

/** * 将集合转换成数组,并且遍历 */public static void fun7() {    Collection c1 = new ArrayList();    c1.add("a");    c1.add("b");    c1.add("c");    c1.add("d");    //将集合转换成数组    Object[] array = c1.toArray();    for (Object object : array) {        System.out.println(object);    }    System.out.println(Arrays.toString(array));}/** * 清空集合 */public static void fun6() {    Collection c1 = new ArrayList();    c1.add("a");    c1.add("b");    c1.add("c");    c1.add("d");    //清空集合    c1.clear();    System.out.println(c1);}/** * 判断有无指定元素,有返回true,并删除,反之 */public static void fun5() {    Collection c1 = new ArrayList();    c1.add("a");    c1.add("b");    c1.add("c");    c1.add("d");    //删除某个元素,集合中若有这个元素返回true并删除,反之,false,并且不作操作    boolean b1 = c1.remove("c");    System.out.println(b1);    System.out.println(c1);}/** * 判断是否包含这个元素 */public static void fun4() {    Collection c1 = new ArrayList();    c1.add("a");    c1.add("b");    c1.add("c");    c1.add("d");    //是否包含某个元素 是返回true  反之    boolean b1 = c1.contains("c");    System.out.println(b1);}/** * 获取集合长度 */public static void fun3() {    Collection c1 = new ArrayList();    c1.add("a");    c1.add("b");    c1.add("c");    c1.add("d");            //获取长度    int i1 = c1.size();    System.out.println(i1);}/** * 判断集合是否为空 */public static void fun2() {    Collection c1 = new ArrayList();    c1.add("a");    c1.add("b");    c1.add("c");    c1.add("d");    //判断这个集合是否为空,是返回true 反之    boolean b1 = c1.isEmpty();    System.out.println(b1);}/** *   add添加 */public static void fun1() {    //创建接口对象,对照多态创建方法,父类引用指向子类对象    Collection c1 = new ArrayList();    //添加 -- 集合可以添加任何类型的数据    //因为add(Object obj)在添加的时候,有自动装箱的过程    //将数据类型转变为基类    c1.add("a");    c1.add(100);    c1.add(true);    c1.add(new Students("刘翔", 18));    System.out.println(c1);}

练习:
需求:创建一个集合, 添加三个学生 遍历集合
要求:只打印学生的姓名

    public static void fun8() {    Collection c1 = new ArrayList();    c1.add(new Students("科比", 29));    c1.add(new Students("艾弗森", 24));    c1.add(new Students("麦迪", 26));    //集合转化为数组    Object[] array = c1.toArray();    //遍历    for (int i = 0; i < array.length; i++) {        //向下转型        Students s1 = (Students)array[i];        //调用getname打印        System.out.println(s1.getName());    }}

其他方法

/** * 将两个集合的交集给第一集和 * 如果第一集和改变 返回true,没改变返回false */public static void fun12() {    Collection c1 = new ArrayList();    c1.add("a");    c1.add("b");    c1.add("c");    c1.add("d");    Collection c2 = new ArrayList();    c2.add("c");    c2.add("d");    //将两个集合的交集给第一集和    //如果第一集和改变 返回true,没改变返回false    boolean b1 = c1.retainAll(c2);    System.out.println(b1);    System.out.println(c1);}/** * 相似fun5,判断两个集合的交集,并将其在第一集合删掉 * 允许有不同元素 */public static void fun11() {    Collection c1 = new ArrayList();    c1.add("a");    c1.add("b");    c1.add("c");    c1.add("d");    Collection c2 = new ArrayList();    c2.add("c");    c2.add("d");    c2.add("ww");    //判断两个集合的交集,并将其在第一集合删掉    //允许有不同的元素    boolean b1 = c1.removeAll(c2);    System.out.println(b1);    System.out.println(c1);}/** * 相似fun4,判断第一集合是否全部包含第二集合 * ArrayList是可以有重复元素的 */public static void fun10() {    Collection c1 = new ArrayList();    c1.add("a");    c1.add("b");    c1.add("c");    c1.add("d");    Collection c2 = new ArrayList();    c2.add("c");    c2.add("d");        c2.add("d");    //判断第一元素中是否全部包含第二元素    boolean b1 = c1.containsAll(c2);    System.out.println(b1);}/** * 相似fun1,将第二集合所有元素添加到第一集合 */public static void fun9() {    Collection c1 = new ArrayList();    c1.add("a");    c1.add("b");    c1.add("c");    c1.add("d");    Collection c2 = new ArrayList();    c2.add("c");    c2.add("d");    //把第二集合中的所有元素添加到第一元素    c1.addAll(c2);    System.out.println(c1);}

迭代器(数组遍历)

/** * 迭代器(数组遍历) */public static void fun13() {    Collection c1 = new ArrayList();    c1.add("a");    c1.add("b");    c1.add("c");    c1.add("d");    //定义一个迭代器    Iterator i1 = c1.iterator();    while (i1.hasNext()) {        //获取集合中的元素        System.out.println(i1.next());    }    /*     * hasNext()     * 用法:     *  判断之后是否有元素可以迭代 有就返回true     * next()     * 用法:     *  返回值是迭代的下一个元素     */}