首页 > 其他 > 详细

Collection集合

时间:2020-12-02 00:14:45      阅读:33      评论:0      收藏:0      [点我收藏+]

Collection集合

集合概述

集合:集合是一个容器,可以存储多个数据,长度可变

集合和数组的区别
  • 数组长度是固定的,而集合长度是可变的
  • 数组中存储的是同一种类型的元素,可以存储基本数据类型也可以存储引用数据类型,
    集合存储的是引用类型元素,同一个集合可以存储不同类型的数据,一般用来存储对象类型
集合的框架

集合根据存储结构可以分为两大类:单列集合和双列集合
单列集合:Collection接口中的子接口或者实现类
双列集合:Map接口中的集合
技术分享图片

技术分享图片

技术分享图片

Collection

  • Collection是单列集合的根接口,用于存储一些符合某种规则的元素
  • 有两个重要的子接口 List和set
  • List接口集合是有序,允许重复的,含有索引
  • Set 接口集合是不允许重复的,但不能说是否有序,因为TreeSet和hashSet无序,hashSet的子类LinkedHashSet是有序的
单列集合框架图

技术分享图片

Collection集合的常用功能

Collection 集合是所有单列集合的父接口,在Collection集合当中定义的所有单列集合的共性的API方法,适用于所有的集合

  • public boolean add(E e):把给定的对象添加到当前的集合当中
  • public void clear(): 清空集合中的所有元素.
  • public Boolean remove(E e);把给定的对象从当前的集合中删除.
  • public boolean contains(E e): 判断当前
  • public boolean isEmply(): 判断当前是否为空
  • public Boolean size(): 获取当前集合的个数
  • public Object[] toArray():把当前集合转化成一个数组

代码演示:


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

public class DemoCollection {
    public static void main(String[] args) {
        Collection<String> coll = new ArrayList<>();
        //添加集合元素,返回值是boolean类型的
        coll.add("小张");
        coll.add("小王");
        coll.add("小孙");
        coll.add("小李");
        boolean b1 = coll.add("小杨");
        System.out.println(b1);
        //移除集合元素,返回值是boolean类型的
        boolean b2 = coll.remove("小王");
        System.out.println(b2);
        //判断集合元素是否为空
        boolean empty = coll.isEmpty();
        System.out.println(empty);
        //判断集合是否包含指定元素
        boolean b3 = coll.contains("小李");
        System.out.println(b3);
        //查看集合包含的元素个数
        int size = coll.size();
        System.out.println(size);
        Object[] objects = coll.toArray();
        for (int i = 0; i <objects.length ; i++) {
            System.out.print(objects[i]+"  ");
        }
        System.out.println("-------------");
        //清空集合里的所有元素,暂时移除,内存中不做改变
        coll.clear();
        System.out.println(coll.size());


    }
}

迭代器 Iterator

java.util.Iterator 包下的接口
技术分享图片

技术分享图片
技术分享图片
技术分享图片
技术分享图片

代码演示
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class DemoIterator {
    public static void main(String[] args) {
        Collection<String> coll = new ArrayList<>();
        coll.add("中国");
        coll.add("美国");
        coll.add("法国");
        coll.add("英国");
        //获取集合的迭代器,通过Iterator()方法获得集合的迭代器实现类对象
        Iterator<String> iterator = coll.iterator();
        //判断集合中是否有下一个元素,没有就会抛出异常
        boolean it = iterator.hasNext();
        System.out.println(it);//chakan一下是否有下个元素,有就是true
        //如果返回true就取出下一个元素
        String next = iterator.next();
        System.out.println(next);
        
        //由于上面的元素只能一个元素一个元素的取出,所以代码冗余性太高,
        // 所以和while循环相结合取出集合中的元素比较方便
        
         while(iterator.hasNext()){
             String next1 = iterator.next();
             System.out.println(next1);
             
             
         }
    }
    
}

迭代器的实现原理

技术分享图片
在调用Interator接口当中的next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next()方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回.
当再次调用next()方法时,迭代器的索引再次向后移动,直到hasNext方法返回false时,表示已经没有下一个元素啦,终止遍历,如果强制取出集合里的末尾不存在的元素,
就会抛出没有元素异常: java.util.NoSuchElementException

增强for循环

在jdk1.5之后出现了一个新的循环结构,for each 循环,一般也称为增强for循环,专门用来遍历数组和集合的,它的内部原理其实是有一个迭代器Iterator,在迭代过程中,不能对集合的增删改查操作.

格式
for(元素的数据类型 变量名 : Collection集合或者数组){
//操作代码

}

代码演示:遍历数组

//int[] static void main(String[] args){
int[] arr = {3,5,7,9,12};
//使用增强for循环遍历arr数组
for(int i : arr){
System.out.println(e);
}


}
代码演示: 遍历集合



#### 泛型
![](https://img2020.cnblogs.com/blog/2177909/202012/2177909-20201201165656928-219593291.png)

Collection集合

原文:https://www.cnblogs.com/renmiaomiao/p/14068286.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!