三十二、Collection集合

1、集合概述

集合就是一种能够存储数据的容器。常见的容器有集合和数组。

集合和数组有什么区别?

  • 数组的长度不可变,而集合的长度是可变的
  • 数组能存储任意类型的数据。而集合只能存储引用数据类型的数据,但基本数据类型可以转成包装类进行存储

2、集合的体系

集合有两大分类

  1. Collection集合(单列集合类)

  2. Map集合

2.1 Collection集合继承体系

Collection为顶层接口,在里面定义着单列集合框架中最最共性的内容。

2.2、Collection常用功能

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

方法 描述
public boolean add(E e) 把给定的对象添加到当前集合中 。
public void clear() 清空集合中所有的元素。
public boolean remove(E e) 把给定的对象在当前集合中删除。
public boolean contains(Object obj) 判断当前集合中是否包含给定的对象。
public boolean isEmpty() 判断当前集合是否为空。
public int size() 返回集合中元素的个数。
public Object[] toArray() 把集合中的元素,存储到数组中

tips: 有关Collection中的方法可不止上面这些,其他方法可以自行查看API学习。

public static void main(String[] args) {
    //  创建集合对象 : 多态
    Collection<String> c = new ArrayList<>();

    // public boolean add(E e):  把给定的对象添加到当前集合中 。
    c.add("关羽");
    c.add("张飞");
    c.add("赵云");
    c.add("马超");
    c.add("黄忠");

    // public void clear() : 清空集合中所有的元素。
    // c.clear();

    // public boolean remove(E e): 把给定的对象在当前集合中删除。
    // System.out.println(c.remove("张飞"));

    // public boolean contains(Object obj): 判断当前集合中是否包含给定的对象。
    // System.out.println(c.contains("姜维"));

    // public boolean isEmpty(): 判断当前集合是否为空。
    // System.out.println(c.isEmpty());

    // public int size(): 返回集合中元素的个数。
    // System.out.println(c.size());

    // public Object[] toArray(): 把集合中的元素,存储到数组中
    Object[] array = c.toArray();
    System.out.println(Arrays.toString(array));

    System.out.println(c);// [关羽, 张飞, 赵云, 马超, 黄忠]
}

3、List与Set接口

List接口

Set接口

4、各个集合的特点

Collection接口:单列最顶层的接口
    
    - List接口: 1有序 	2有索引 	3元素可以重复
    	- ArrayList 类: 数组结构:查询块,增删慢。
    	- LinkedList类: 链表结构:增删块,查询慢。
    
    - Set 接口: 1无序	2无索引	3元素不可重复(唯一)
    	- HashSet	类: 哈希表结构:保证元素的唯一。
    		- LinkedHashSet类: 链表 + 哈希表结构:有序且保证元素唯一。
    	- TreeSet	类: 红黑树结构:保证元素唯一,对元素快速排序。

因为Collection、Set以及下面的类,没有索引 ;而List是有索引的。所以除了List及下面的类,能用for循环;其他的集合是不能使用for循环的。但他们多能使用 迭代器、增强for

最后提醒:

以后在使用集合的时候,根据开发情况直接创建子类对象就可以了,不需要使用多态。

posted @ 2021-06-26 08:24  火烧云Z  阅读(51)  评论(0)    收藏  举报