Day15-1.集合的概述 、Collection集合

1 集合

  1. 概述:用来存储多个数据的容器。
  2. 集合和数组的区别:
    共同点:
           都是用来存储数据的容器,都可以存储多个数据
    不同点:
         (1)数组的大小是固定的,不能新增也不能减少元素;集合的大小是可以进行改变的,可以往集合中新增元素或者删除元素。
         (2)数组既可以存储基本数据类型的数据,也可以存储引用数据类型的数据;集合只能存储引用数据类型数据。
         (3)数组中本身操作元素的功能比较少,就只有一个length属性;集合的功能比较多,有很多以操作元素的方法。
  3. 为什么使用集合?
    (1)数组大小固定,如果想新增或者删除元素,操作起来比较麻烦。
    使用集合,大小是不固定的,可以不断新增也可以减少。
    (2)数组中操作元素的功能较少,如果后续想要操作数组中的元素,需要自己定义各种方法,比较麻烦。集合中提供了很多操作元素的方法,直接使用即可,比较方便。

1.1 集合的体系

集合体系结构图:
在这里插入图片描述

2 单列集合体系的详细讲解

2.1 Collection 集合

  1. 单词:收集,集合
  2. 概述:此类是单列集合的顶层接口,任何单列集合都属于该接口的子接口或者实现类。
  3. 特点:
    (1)是一个接口不能去创建对象。只能通过实现类创建对象访问其中的方法。
    (2)在java.util包,需要导包使用
    (3)Collection中定义的方法,子接口和实现类都可以去使用。

2.2 Collection集合的常用方法

函数名解释
add(E e)往集合中添加元素
addAll(Collection<? extends E> c)将集合c中的内容全添加到调用者集合中
remove(Object o)删除集合中的o元素
removeAll(Collection<?> c)删除调用者集合中和c集合中相同的元素
clear()清空集合
contains(Object o)判断集合中是否包含元素o
containsAll(Collection<?> c)判断调用者集合中是否全部包含集合c的所有元素
isEmpty()判断集合是否为空
size()返回集合中元素的个数

代码

package demos2_collection;

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

public class Demo02 {
    public static void main(String[] args) {
        //想学习接口的特殊方法,本身不能创建对象
        //使用多态来定义
        Collection c = new ArrayList();
        //往集合中添加一个元素
        c.add("xyz");
        c.add("123");
        c.add("abc");
        System.out.println(c);
        Collection c2 = new ArrayList();
        c2.add("aaa");
        c2.add("bbb");
        //将集合c2的元素全部添加到集合c中
        c.addAll(c2);
        System.out.println(c);
        System.out.println(c2);
        //删除集合c中的元素“abc”
        c.remove("abc");
        System.out.println(c);
        //将c中   和c2集合相同的元素全部删掉
        c.removeAll(c2);
        System.out.println(c);
        //将集合中的元素全部清空
        c.clear();
        //判断集合c中是否包含元素“123”
        System.out.println(c.contains("123"));
        //判断集合c中是否全部包含集合c2的元素
        System.out.println(c.containsAll(c2));
        //判断集合c是否是空的集合
        System.out.println(c.isEmpty());
        //返回集合c中元素的个数
        System.out.println(c.size());
    }
}

3 Collection集合的遍历方式

3.1 Collection集合的第一种遍历方式

  1. 方式:转数组遍历:将集合中的数据转到一个数组中,再遍历数组,等于是间接的遍历 集合。
  2. 集合转为数组的方法:toArray()

代码

package demos2_collection;

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

public class Demo03 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        //在往集合中添加元素时,都默认向上转型
        //所以集合中的元素都是Object
        c.add("xyz");
        c.add("abc");
        c.add("123");
        c.add("qqq");
        //集合c中的元素,不能直接获取
        // 1、先将集合中的元素先转移到数组中
        Object[] obs = c.toArray();
        // 2、再去遍历数组,等于间接遍历集合
        for (int i = 0; i < obs.length; i++) {
            Object o = obs[i];//Object o = new String("xyz");
            System.out.println(o.toString());
        }
    }
}

3.2 Collection集合的第二种遍历方式

  1. 方式:使用迭代器遍历集合
    迭代:更新换代
    迭代器:用来遍历集合元素的对象
  2. 获取迭代器的方式:通过集合定义的方法来获取:iterator()
  3. 迭代器对象可以使用的方法:
    next();
    hasNext();

3.2.1 注意事项:

  1. 使用next方法可以获取集合中的所有元素,虽然反复使用的方法是一样的,但是返回的数据不同。
  2. next方法不仅可以获取元素,还可以移动指针,获取一次之后,指针指向下一个元素。
  3. 如果没有下一个元素,仍然获取出现java.util.NoSuchElementException(没有当前元素异常)。
  4. 可以使用hasnext方法来判断集合中指针指向的当前元素是否存在
  5. 反复使用next和hasnext方法比较麻烦,所以使用while循环来简化操作。

代码

package demos2_collection;

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

public class Demo05 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add(new Person("张三",23));
        c.add(new Person("李四",24));
        c.add(new Person("王五",25));
        c.add(new Person("赵六",26));
        //获取迭代器对象
        Iterator it = c.iterator();
        //判断是否有下一个元素
        while(it.hasNext()){
            //获取下一个元素
            Person p = (Person)it.next();
            //打印元素的属性值
            System.out.println(p.getName() +"..." +p.getAge());
        }
    }

    private static void test01() {
        Collection c = new ArrayList();
        c.add("abc");
        c.add("aaa");
        c.add("123");
        c.add("xyz");
        c.add("xyz");
        //先获取集合的迭代器对象
        Iterator it = c.iterator();
        //判断集合中是否有下一个元素
        //如果有,就返回true,如果没有就返回false
        while(it.hasNext()){
            //如果上述表达式为真,表示有元素
            //使用next获取下一个元素
            Object o = it.next();
            System.out.println(o);
        }
    }
}

3.3 Collection集合的第三种遍历方式

  1. 方式:使用增强for循环遍历
  2. 增强for循环:
    它是JDK5之后出现的,其内部原理Iterator迭代器相同
  3. 格式:
 for(元素的数据类型 元素名称:集合或者数组名称){
     元素名称的使用
 }

代码

package demos2_collection;

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

public class Demo06 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("abc");
        c.add("aaa");
        c.add("123");
        c.add("xyz");
        c.add("xyz");
        //使用增强for循环遍历
        //底层使用迭代器实现的
        for(Object o:c){
            System.out.println(o);
        }

        //使用增强for循环遍历数组
        int[] arr = {10,20,30,40};
        for(int i:arr){
            System.out.println(i);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值