• Java从零开始学二十(集合简介)


    一、为什么需要集合框架

    数组的长度是固定的,但是如果写程序时并不知道程序运行时会需要多少对象、或者需要更复杂的方式存储对象,---那么,可以使用JAVA集合框架,来解决这类问题

    二、集合框架主要接口

    No
    接口
    描述
    1
    Collection
    是存放一组单值的最大接口,所谓的单值是指集合中的每个元素都是一个对象。一般很少会直接使用此接口直接操作。
    2
    List
    是Collection接口的子接口,也是最常用的接口,此接口对Collection接口进行了大量的扩充,里面的内容是允许重复的。
    3
    Set
    是Collection接口的子类,没有对Collection接口进行扩充,里面不允许存放重复内容。
    4
    Map
    Map是存放一对值的最大接口,即,接口中的每个元素都是一对,以key-value的形式保存。
    5
    Iterator
    集合的输出接口,用于输出集合中的内容,只能进行从前到后的单向输出。
    6
    ListIterator
    是Iterator的子接口,可以进行双向输出。
    7
    Enumeration
    是最早的输出接口,用于输出指定集合中的内容。
    8
    SortedSet
    单值的排序接口,实现此接口的集合类,里面的内容是可以排序的,使用比较器排序。
    9
    SortedMap
    存放一对值的排序接口,实现此接口的集合类,里面的内容按照key排序,使用比较器排序。
    10
    Queue
    队列接口,此接口的子类可以实现队列操作。
    11
    Map.Entry
    Map.Entry的内部接口,每个Map.Entry对象都保存着一对key-value的内容,每个Map接口中都保存多个Map.Entry接口实例。

    三、接口的继承关系

    在一般的开发中,往往很少去直接使用Collection接口进行开发,而基本上都是使用其子接口。子接口主要有:List、Set、Queue、SortedSet。

     四、Collection子接口的定义

    Collection接口虽然是集合的最大接口,但是如果直接使用Collection接口进行操作的话,则表示的操作意义不明确,所以在JAVA开发中已经不提倡直接使用Collection接口了,主要的子接口如下:
    • List接口:可以存放重复的内容。
    • Set接口:不能存放重复的内容,所有的重复内容是靠hashCode()和equals()两个方法区分的。
    • Queue:队列接口。
    • SortedSet接口:可以对集合中的数据进行排序。

     五、Collection接口的方法定义

    No.
    方法
    类型
    描述
    1
    public boolean add(E o)
    普通
    向集合中插入对象
    2
    public boolean addAll(Collection<? extends E> c)
    普通
    将一个集合的内容插入进来
    3
    public void clear()
    普通
    清除此集合中的所有元素
    4
    public boolean contains(Object o)
    普通
    判断某一个对象是否在集合中存在
    5
    public boolean containsAll(Collection<?> c)
    普通
    判断一组对象是否在集合中存在
    6
    public boolean equals(Object o)
    普通
    对象比较
    7
    public int hashCode()
    普通
    哈希码
    8
    public boolean isEmpty()
    普通
    集合是否为空
    9
    public Iterator<E> iterator()
    普通
    为Iterator接口实例化
    10
    public boolean remove(Object o)
    普通
    删除指定对象
    11
    public boolean removeAll(Collection<?> c)
    普通
    删除一组对象
    12
    public boolean retainAll(Collection<?> c)
    普通
    保存指定内容
    13
    public int size()
    普通
    求出集合的大小
    14
    public Object[] toArray()
    普通
    将一个集合变为对象数组
    15
    public <T> T[] toArray(T[] a)
    普通
    指定好返回的对象数组类型

    六、区别

    • Connection:接口存储值不唯一,无序的对象
    • List:接口存储值不唯一,有序(插入顺序)的对象
    • Set:接口存储值唯一,无序的对象
    • Map:接口存储值一组键值对象,提供键(Key)到值(Value)的映射
  • 相关阅读:
    Codeforces Round #688 (Div. 2)B. Suffix Operations(思维+贡献)
    Codeforces Round #688 (Div. 2)C. Triangles(思维+贪心)
    Codeforces Round #689 (Div. 2, based on Zed Code Competition)D. Divide and Summarize(分治+dfs)
    Codeforces Round #689 (Div. 2, based on Zed Code Competition)C. Random Events(思维)
    Codeforces Round #689 (Div. 2, based on Zed Code Competition)B. Find the Spruce(dp + 重复利用)
    Educational Codeforces Round 101 (Rated for Div. 2)D. Ceil Divisions(思维)
    Educational Codeforces Round 101 (Rated for Div. 2)C. Building a Fence(思维+区间处理)
    Codeforces Round #693 (Div. 3)G. Moving to the Capital(dfs)
    Codeforces Round #693 (Div. 3)E. Correct Placement
    Git 学习笔记02丨Git 分支
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4298879.html
Copyright © 2020-2023  润新知