java -- 初识集合

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

数组 和 集合 的区别
数组
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()
     * 用法:
     *  返回值是迭代的下一个元素
     */
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值