容器有俩大接口Collection接口(无序,不唯一)和Map接口

Collection接口有俩个子接口分别是List和Set。

List接口特点是有序但是不唯一,她有三个子接口分别是:ArrayList,Vector以及LinkList

ArrayList我们在前面文章中有详细介绍。在这里我们补充几点。ArrayList底层是数组。由于她是继承List接口。所以她也是有序但是不唯一。

Vector的的底层也是数组,他和ArrayList的方法类似。

在这里我们强调一下ArrayList和Vector的区别:

ArrayList是jdk1.2版本出来的。安全性低,线程不同步,扩容0.5倍,是在添加一个元素的时候初始化容量10

Vector是jdk1.0版本的,安全性高,线程是同步的(被synchronize的修饰),扩容1.0倍,是在调用无参构造方法的时候调用,初始化容量10。

List是比较特殊的,她不是数组,而是一个链表,链表又有单链表和双链表。链表的特点就是她有前驱和后继。她是利用前驱去连接前一个元素,后继是连接后一个元素。这样他的增删改的速度就很快,但是相同的查询的速度就很慢。

Set接口也有俩个子接口,分别是:TreeSet和HashSet。相同的,因为他俩都是继承的Set因此他俩也都是无序,但是TreeSet是唯一。TreeSet的底层是红黑树,HashSet的底层是哈希表。HashSet还有一个子接口LinkHashSet,这是一个有序的HashSet,也算是将HashSet完善一下。

HashSet原理:在存储自定义对象时,必须重写hashcode()以及equals()方法。

1.调用HashCode方法计算哈希吗值

2.根据y=k(x)计算存储位置,x为哈希码值,y是存储位置

3.如果该位置上面没有元素,则直接添加,如果有元素,则调用equals()进行比较,要是内容相同则不需要添加,如果 内容不同则需要在后面加上链表,当链表结点大于8时,则将链表转为红黑树,目的是为了提高遍历速度



TreeSet:在存储自定义对象时,要求必须具备比较规则,可以使内部比较器Comparable接口,也可以使用外部比较器Comparator接口。

遍历集合的时候都可以用加强for循环还有使用迭代器去循环。

Java修炼——容器体系框架总结的更多相关文章

  1. 《Java并发编程的艺术》第6/7/8章 Java并发容器与框架/13个原子操作/并发工具类

    第6章 Java并发容器和框架 6.1  ConcurrentHashMap(线程安全的HashMap.锁分段技术) 6.1.1 为什么要使用ConcurrentHashMap 在并发编程中使用Has ...

  2. Java并发容器和框架

    ConcurrentHashMap 在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率近100%.因为多线程会导致HashMap的Entry链表形成环形数据结构,一旦形成环 ...

  3. 第六章 Java并发容器和框架

    ConcurrentHashMap的实现原理与使用 ConcurrentHashMap是线程安全且高效的hashmap.本节让我们一起研究一下该容器是如何在保证线程安全的同时又能保证高效的操作. 为什 ...

  4. JAVA并发编程的艺术 Java并发容器和框架

    ConcurrentHashMap ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成. 一个ConcurrentHashMap里包含一个Segment数组, ...

  5. Java修炼——容器HashMap用法

    直接上代码,容器集合之间的关系在后面我会继续详细分析,这次先看HashMap用法 HashMap的方法都在代码中有解释.有需要的可以仔细看看 package com.bjsxt.map; import ...

  6. 013-并发编程-java.util.concurrent.locks之-AbstractQueuedSynchronizer-用于构建锁和同步容器的框架、独占锁与共享锁的获取与释放

    一.概述 AbstractQueuedSynchronizer (简称AQS),位于java.util.concurrent.locks.AbstractQueuedSynchronizer包下, A ...

  7. java中的对象、类、包、模块、组件、容器、框架、架构的概念入门

    在Java中有那么一些概念:对象.类.包.模块.组件.容器.框架.这些概念都有一个共同的特点,就是[容纳]. 对象(Object) 在Java的世界里,对象是通过属性和方法来分别对应事务所具有的静态属 ...

  8. 第48节:Java当中的集合框架

    Java当中的集合框架 01 在我们班里有50位同学,就有50位对象. // 简书作者:达叔小生 Student[] stus = new Student[20]; 结果来了一位插班生,该同学因为觉得 ...

  9. 支付宝客户端架构解析:Android 容器化框架初探

    摘要: 本文将介绍支付宝 Android 容器化框架设计的基本思路. 1. 前言 由本章节开始,我们将从支付宝客户端的架构设计方案入手,细分拆解客户端在“容器化框架设计”.“网络优化”.“性能启动优化 ...

随机推荐

  1. 你了解MySQL的加锁规则吗?

    注:加锁规则指的是next-key lock,如果还不了解next-key lock,请阅读上一篇博客 加锁规则可以概括为:两个原则.两个优化和一个bug: 原则1:加锁的基本单位是next-key ...

  2. IP网段的判断

    一.    OSI七层模型 表示 说明 作用 应用层 HTTP.ftp 协议 表示层 UTF-8 将应用层协议翻译成计算机可识别的语言 会话层 管理传输层 传输层 TCP/UDP 建立以及断开连接 网 ...

  3. Servlet——用户登录案例

    案例:用户登录 * 用户登录案例需求: 1.编写login.html登录页面 username & password 两个输入框 2.使用Druid数据库连接池技术,操作mysql,day14 ...

  4. 手把手教你实现热更新功能,带你了解 Arthas 热更新背后的原理

    文章来源:https://studyidea.cn/java-hotswap 一.前言 一天下午正在摸鱼的时候,测试小姐姐走了过来求助,说是需要改动测试环境 mock 应用.但是这个应用一时半会又找不 ...

  5. Netty处理器重要概念

    1.Netty的处理器可以分为两类:入站处理器和出战处理器 2.入站处理器顶层是ChannelInboundHandler,出战处理器顶层是ChannelOutboundHandler 3.数据处理时 ...

  6. Cesium坐标系及坐标转换详解

    前言 Cesium项目中经常涉及到模型加载.浏览以及不同数据之间的坐标转换,弄明白Cesium中采用的坐标系以及各个坐标系之间的转换,是我们迈向三维GIS大门的前提,本文详细的介绍了Cesium中采用 ...

  7. suseoj 1210: 会场安排问题 (贪心)

    1210: 会场安排问题 时间限制: 1 Sec  内存限制: 128 MB提交: 1  解决: 1[提交][状态][讨论版][命题人:liyuansong] 题目描述 假设要在足够多的会场里安排一批 ...

  8. 【Leetcode 做题学算法周刊】第四期

    首发于微信公众号<前端成长记>,写于 2019.11.21 背景 本文记录刷题过程中的整个思考过程,以供参考.主要内容涵盖: 题目分析设想 编写代码验证 查阅他人解法 思考总结 目录 67 ...

  9. python:timeit模块

    (鱼c)timeit模块详解——准确测量小段代码的执行时间 http://bbs.fishc.com/forum.php?mod=viewthread&tid=55593&extra= ...

  10. LeetCode51 N皇后——经典dfs+回溯(三段式解法)

    代码如下: class Solution { public: // record[row] 该行对应的列 vector<vector<string> > ans; // 结果集 ...