集合(一)-------单列集合collection

在学习集合之前我们一直用数组来存放数据:
1.数组: 假设存放元素过多,需要频繁扩容,否则会数组越界
    假设元素过少,会造成内存浪费。
    而且存放数据类型单一。
从 java 1.2 开始引入集合
2.集合(容器):广泛用于存储,获取和处理一组紧密相关的数据。
Java类库中java.util包中包含若干用于实现集合(如链表、队列)的接口和类,并提供了有效地处理这些紧密相关数据的各种算法。
3.集合框架图如下:
① 单列集合: 根接口 Collection
在这里插入图片描述
② 双列集合(是按照一对存在映射关系的键值对 Map<key,value>进行存储):
根接口 Map
在这里插入图片描述
4.根接口Collection中的15种方法
在这里插入图片描述
对比一下  +toArray()
      +toArray(T[] a)
需要注意的是:
在这里插入图片描述
接口我们都不可以用new来创建实例对象,需要借助已知实现类
List<String> list=new ArrayList<>();
1>toArray();
此方法是将集合元素转换为数组,并将数组返回,对数组做任何的修改都不会对原集合造成影响。
返回的类型为Object类型:
在这里插入图片描述
输出结果:
在这里插入图片描述
2>toArray(T[] a);放置到指定数组a中
分为以下几种情况:
①传入数组大小刚好放置集合元素
(1)长度刚好且没有初始值
    str1已经存储下来集合元素,并作为返回值传递给str2;
(2)长度刚好有初始值

        String[] str1=new String[list.size()];
        str1[0]="***";                 //并不影响输出结果  
        String[] str2=list.toArray(str1);                

②传入数组大小小于集合元素

        list.add("123");
        list.add("124");
        list.add("125");
        list.add("126");
        list.add("126");    //从运行结果我们可以看出List里可以放置相同的元素
        String[] str1=new String[list.size()-1];  //创建新数组的大小小于元素个数
        String[] str2=list.toArray(str1);    //有参的方法返回值也是一个相同类型的数组
        for (Object o : str1) {
            System.out.print(o+"  ");
        }
        System.out.println();
        for (Object o : str2) {
            System.out.print(o+"  ");
        }

运行结果:
在这里插入图片描述
  我们可以看出当数组过小时,str1放置不了所有元素,则重新      开辟空间将值返回给str2;
③传入数组大小大于集合元素
(1)原数组没有初始值
在这里插入图片描述
可以看出剩余的为null
(2)原数组有初始值
当初始值放置下标在集合元素数内时,不会影响输出结果

    String[] str1=new String[list.size()+2];
    str1[list.size()+1]="000";
    String[] str2=list.toArray(str1);

输出结果:
在这里插入图片描述
由此可得:元素为从前往后依次存放,会进行数据覆盖。

5.迭代器 iterator()方法

遍历输出数组元素的三种方式:
1–>for循环
2–>foreach循环
3–>迭代器

Iterator迭代器:在java.util包下,能够遍历各种集合类型,所有的Collection接口的子接口,子类都支持Iterator迭代器,可调用集合中的 iterator()方法来获得该集合的迭代器。
Iterator三种方法:
①hasNext() 判断集合中是否存在下一个元素,返回值为boolean值
②next () 返回集合中的下一个元素
③remove() 将集合中上一个由next()方法返回的元素删除
在这里插入图片描述
remove() 方法:运行结果中没有 “124”
在这里插入图片描述
而我们知道在List集合中也有一个remove() 方法:

在这里插入图片描述
运行结果:抛出异常java.util.ConcurrentModificationException------>此时引出了JAVA迭代器(快速失败)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值