• Java学习


    Java容器知识框架

    参考: 原文链接

    Java容器是前人为我们设计好的数据结构

    本文意在介绍Java容器的基本知识框架,而不会过多介绍某一个具体的容器的使用方法。

    一、常用Java容器(仍有少量容器未在图中展示)

    image-20201019211836953

    可以看出,Java的容器简要分为两个部分,一个是Collection,另一个是Map。之所以这样分类,是因为Collection的各种数据结构都是单元素的集合,而Map则是键值对的集合。

    Collection接口

    在学习容器的具体用法之前,我们有必要分析一下上图。Collection本身是一个最基本的集合接口,它定义了一组允许重复的对象。Collection接口派生出了三个子接口List,Queue,Set

    • List接口

      List的特点就是所有的元素是可以重复的。List接口在Collection的基础上增加了很多的方法。

      List主要分为ArrayListLinkedList,前者底层是使用数组实现的List,后者是使用链表实现的List。

      Vector是一个已经被弃用的类,因为他是线程同步的,而我们平时使用的时候都是非同步的,使用同步的坏处就是会在一个记录上加锁,防止多个程序访问同一条数据导致数据不同步。这样会导致访问速度变慢。

      Stack是满足“后进先出”规则的容器,注意LinkedList可以实现所有的栈功能。

    • Queue

      队列是一个满足FIFO的数据结构。
      LinkedList提供了方法支持队列操作,并且实现了Queue接口,所以LinkedList是队列的一种实现,可以通过LinkedList向上转型为Queue

      • offer:讲一个元素插入对尾
      • peek:不移除的情况下将元素插入队尾,队列为空返回null
      • element:不移除的情况下将元素插入队尾,队列为空报错
      • poll:移除并返回队头,队列为空返回null
      • remove:不移除的情况下将元素插入队尾,队列为空报错

      PriorityQueue是优先级队列,我们暂时先不介绍

    • Set

      set代表的是数学上的集合的意思,所以set中的元素不可以重复。
      所以set中查找是最为重要的操作,而对于查找来说,我们最常用的就是HashSet

      • HastSet底层是使用散列函数,在查询的方面有优化
      • TreeSet底层使用的是红黑树

    Map接口

    Map是使用键值对存储的一种结构,所以在处理列如单词统计等方面是杀手锏
    Map的键值对都可以为null
    Map可以多维扩展。例如一个人拥有多个宠物,你可以这样定义:Map< Person, List< pet>>

    • Object put(Object key, Object value):放进一个键值对,返回值是被替换的值
    • Object remove(Object key)
    • void putAll(Map mapping)
    • void clear()
    • boolean containsKey(Object key)是否包含某个键
    • boolean containsValue(Object value)是否包含某个值

    在Map中比较重要的是处理键值对的集合

    • public Set keySet():返回这个Map的所有键的集合,因为Map中键是唯一的,所以返回使用一个set
    • public Collection values():返回这个Map的所有值的集合,因为值可能重复,所以返回一个Collection
    • public Set entrySet():返回一个实现Map.Entry接口对象集合,使用这个方法可以遍历每一条记录。
    ---- suffer now and live the rest of your life as a champion ----
  • 相关阅读:
    ajax返回乱码的解决方案
    Javascript里使用Dom操作Xml
    ASP.NET 网站路径
    远程连接SQL Server
    缘 in English
    简单C#验证类
    js事件列表
    ArrayList用法
    下拉菜单遮挡层的解决方案
    正则表达式过滤HTML危险脚本
  • 原文地址:https://www.cnblogs.com/popodynasty/p/13843273.html
Copyright © 2020-2023  润新知