【Java基础进阶笔记】- Day02 - 第一章 Collection集合

Java基础进阶笔记 - Day02 - 第一章 Collection集合

系统:Win10
JDK:1.8.0_121
IDE:IntelliJ IDEA 2017.3.7

1.1 集合概述

在前面我们已经学习过集合ArrayList,那么集合到底是什么?

  • 集合:集合是java中提供的一种容器,可以用来存储多个数据

集合和数组既然都是容器,它们有什么区别?

  • 数组的长度是固定的,集合的长度是可变的
  • 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象,而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储

集合可以存储任意对象,如果没有指定泛型,对象将会被提升成Object类型

1.2 集合框架

JavaSE提供了满足各种需求的API,在使用这些API前,先了解其继承与接口操作架构,才能了解何时采用哪个类,以及类之间如何彼此合作,从而达到灵活引用
集合按照其存储结构,可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map,这次我们主要学习Collection集合,Map留到后面学习

  • Collection:单列集合的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.Listjava.util.Set
    从上面的描述可以看出JDK中提供了丰富的集合类库,为了方便初学者进行系统地学习,接下来通过一张图来描述单列集合类的继承体系
    在这里插入图片描述

List集合:有索引,可以存储重复元素,可以保证存取顺序

  • ArrayList:底层是数组实现的,查询快,增删慢
  • LinkedList:底层是链表实现的,查询慢,增删快
  • Vector:实现和ArrayList类似,主要是区别是,Vector是线程安全的,但是性能比ArrayList要低

Set集合:无索引,不可存储重复元素

  • HashSet:底层是哈希表+单向链表/红黑树实现的,无索引,不可以存储重复元素,存取无序
  • LinkedHashSet:继承HashSet,同时维护着一条双重链表定义迭代顺序,无索引,不可以存储重复元素,可以保证存取顺序
  • TreeSet:底层是二叉树实现,一般用于排序,可以保证元素的自然顺序

顺序有两个概念,一是按照添加的顺序排列,二是按照自然顺序a-z排列。

1.3 Collection常用功能

Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。方法如下:

  • public boolean add(E e):把给定的对象添加到当前集合中
  • public boolean contains(E e):判断当前集合中是否包含给定的对象
  • public boolean remove(E e):删除出现在集合中的第一个指定的元素-Removes the first occurrence of the specified element from this list
  • public int size():返回集合中元素的个数
  • public Object[] toArray():把集合中的元素,存储到数组中
  • public boolean isEmpty():判断当前集合是否为空
  • public void clear():清空集合中所有的元素

方法演示如下:

public class CollectionDemo01 {
    
    
    public static void main(String[] args) {
    
    
        // 使用多态创建集合对象
        Collection<String> coll = new ArrayList();
        // public boolean add(E e):把给定的对象添加到当前集合中
        coll.add("张三");
        coll.add("张三");
        coll.add("李四");
        coll.add("王二");
        coll.add("麻子");
        System.out.println(coll);

        // public boolean contains(E e):判断当前集合中是否包含给定的对象
        boolean b1 = coll.contains("李四");
        System.out.println("集合中是否存在 李四:" + b1);
        boolean b2 = coll.contains("赵四");
        System.out.println("集合中是否存在 赵四:" + b2);

        // public boolean remove(E e):删除出现在集合中的第一个指定的元素
        // Removes the first occurrence of the specified element from this list
        boolean b3 = coll.remove("张三");
        System.out.println("是否已经删除 张三:" + b3);
        System.out.println(coll);

        // public int size():返回集合中元素的个数
        int size = coll.size();
        System.out.println("coll集合大小为:" + size);

        // public Object[] toArray():把集合中的元素,存储到数组中
        Object[] objects = coll.toArray();
        // 遍历数组
        for (int i = 0; i < objects.length; i++) {
    
    
            System.out.println(objects[i]);
        }

        // public boolean isEmpty():判断当前集合是否为空
        boolean b4 = coll.isEmpty();
        System.out.println("coll集合是否为空:" + b4);

        // public void clear():清空集合中所有的元素
        coll.clear();
        boolean b5 = coll.isEmpty();
        System.out.println("coll集合清空所有元素后是否为空:" + b5);
    }
}

运行结果:
在这里插入图片描述

小贴士:有关Collection中方法不止上面这些,只是上面这些比较常用,其他方法可以查看API文档学习

猜你喜欢

转载自blog.csdn.net/qq_35132089/article/details/111501896