首页 > 其他分享 >集合框架

集合框架

时间:2024-02-21 13:55:46浏览次数:18  
标签:框架 接口 线程 key 集合 允许 null

集合框架

集合框架

集合框架被设计成要满足以下几个目标

- 该框架必须是高性能的,基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。
- 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。
- 对一个集合的扩展和适应必须是简单的。

Java集合框架共有三大类接口:

- Collection接口存储一组不唯一(允许重复),无序的对象。
- Set接口继承Collection接口,存储一组唯一(不允许重复),无序的对象。
- List接口继承Collection接口,存储一组不唯一(允许重复),有序(以元素插入次序来放置元素,不会重新排列)的对象。
- Map接口存储一组成对的键-值对象,提供key到值得映射,Map中的key不要求有序,不允许重复,value同样不要求有序,但是允许重复。

1.1List 接口

- ArrayList
- LinkedList
- Vector

 ArrayList,LinkedList,Vector的区别
ArrayList LinkedList Vector
底层实现 数组 双向链表 数组
同步性及效率 不同步,非线程安全,效率高,支持随机访问 不同步,非线程安全,效率高 同步,线程安全,效率低
特点 查询快,增删慢 查询慢,增删快 查询快,增删慢
默认容量 10 / 10
扩容机制 1.5倍 / 2

1.2 Set集合

Set的主要实现类:HashSet,TreeSet

区别:

HashSet TreeSet LinkedHashSet
底层实现
重复性
有无序 无序 有序,支持两种排序方式,自然排序和定制排序 有序,以元素插入的顺序来维护集合的链接表
时间复杂度 add(),remove(),contains()方法的时间复杂度是O(1) O(logn) O(1)
同步性 不同步,线程不安全 不同步,线程不安全 不同步,线程不安全
null值 允许 不允许 允许
比较 equals() compareTo() equals()
总结:HashSet是一个通用的Set,而LinkedHashSet提供元素插入顺序保证,TreeSet是一个SortedSet实现,由Comparator或者Comparable指定的元素排序存储元素。

1.3 Map接口

类:HashMap,TreeMap,HashTable,LinkedHashMap,ConccurrentHashMap

区别:

HashMap HashTable TreeMap
底层实现 哈希表(数组+链表) 哈希表(数组+链表) 红黑树
同步性 线程不同步 线程同步 线程不同步
null值 允许key和value是null,但是只允许一个key为null,且这个元素存放在哈希表0角标位置 不允许 value允许为null,当未实现Comparator接口时,key不可以为null,当实现了后,需要对null情况判断,如果没有判断,会抛出异常,若判断了,可以存入
hash 使用hash(Object key)扰动函数对key的hashCode进行扰动后作为hash值 直接使用key的hashCode()返回值作为hash值
容量 容量为24且容量一定为2n 默认容量为11,不一定是2^n
扩容 两倍 两倍+1

1.4 集合工具类:Collections

Collection和Collections的区别:
Collections是个java.util下的类,是针对集合类的一个工具类,提供一系列静态方法,实现对集合的操作
Collection是个jaca.util下的接口,它是各种集合结构的父接口
数组工具类Arrays

用于操作数组对象的工具类,里面都是静态方法

数组->集合  asList方法

集合->数组  toArray()

标签:框架,接口,线程,key,集合,允许,null
From: https://www.cnblogs.com/cqwes123/p/18025048

相关文章

  • 神经网络优化篇:详解深度学习框架(Deep Learning frameworks)
    深度学习框架一小点作者内心os:24年春节已过完,从熟悉的地方又回到陌生的地方谋生,愿新的一年都得偿所愿,心想事成。学到这会儿会发现,除非应用更复杂的模型,例如卷积神经网络,或者循环神经网络,或者当开始应用很大的模型,否则它就越来越不实用了,至少对大多数人而言,从零开始全部靠自己......
  • [转]多端统一框架Taro基础教程(支持转小程序/React Native(安卓/iOS)/鸿蒙)
    原文地址:多端统一框架Taro基础教程-知乎随着微信小程序越来越火,其它平台也都推出了自己的小程序产品(支付宝、快应用、百度、抖音)。小程序最大的特点就是平台能为你提供强大的流量,所以小程序开发变成了前端必会知识。作为一个从来不想写程序,一心只想泡妹子的程序员,我一直期盼......
  • Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
    写在开头队列是Java中的一个集合接口,之前的文章已经讲解了List和Set,那么今天就来唠一唠它吧。队列的特点:存储的元素是有序的、可重复的。队列的两大接口QueuevsDequeQueue是单端队列,只能从一端插入元素,另一端删除元素,实现上一般遵循先进先出(FIFO)规则。Queue接口抛出......
  • .Net Core框架容器依赖注入的生命周期
    一.前言框架中依赖注入容器包括了三种生命周期,Singleton、Scoped和Transient。Singleton是全局实例,它存储到根容器上,从任何容器解析都会得到全局唯一的实例。Transient是瞬时实例,它不会存储到容器上,从任何容器解析都会重新实例化一个新的对象。Scoped是域内实......
  • KOA2框架原码解析和实现
    什么是koa框架?koa是一个基于node实现的一个新的web框架,它是由express框架的原班人马打造的。它的特点是优雅、简洁、表达力强、自由度高。它更express相比,它是一个更轻量的node框架,因为它所有功能都通过插件实现,这种插拔式的架构设计模式,很符合unix哲学。koa框架现在更新到了2.x......
  • 零基础搭建chatgpt商业网站,上线即可运营,集合midjourney
    在当前AI技术迅猛发展的背景下,普通人也有机会通过搭建chatgpt镜像网站盈利。AI系统“松鼠AI”便是这样一款集成了多项功能的系统。通过简单的部署,即可获得包括chatgpt、midjourney、gpt绘画、语音交互、自动生成思维导图和PPT等超过20项核心功能的强大平台。下面简单教学,帮助大......
  • Java集合篇之set,面试官:请说一说HashSet、LinkedHashSet、TreeSet的区别?
    写在开头Java的集合世界中主要由List,Set,Queue,Map构成,我们在之前的博文中已经学习了List,接下来我们继续学习Set集合。Set特点:存取无序,不可以存放重复的元素,不可以用下标对元素进行操作HashSet作为Set容器的代表子类,HashSet经常被用到,我们通过源码去分析它【源码查看】public......
  • 01 基本框架:一个键值数据库包含什么
    01基本框架:一个键值数据库包含什么前言:对蒋德钧老师的《Redis核心技术与实战》课程的学习记录。构造简单的键值数据库SimpleKV考虑里面可以存什么样的数据,对数据可以做什么样的操作,也就是数据模型和操作接口。对于键值数据库而言,基本的数据模型是key-value模型。Redis......
  • 若依微服务框架RuoYi-Cloud-Oracle本地运行并部署搭建
    我一开始去若依官网学习,去Gitee上面下载的是RuoYi-Cloud若依微服务版本发现是mysql库,按照若依官方文档我运行了起来,没有啥太大的问题,但是我想要oracle版本,又去网上找了找终于在github上面找到了https://github.com/yangzongzhuan/RuoYi-Cloud-Oracle?tab=readme-ov-file我就clo......
  • 记账本程序开发笔记3:模块设计和框架搭建
    在记账本程序中,可以设计以下模块和框架:       结构体AccountItem:表示记账项,包括itemType(收入或支出)、amount(金额)和detail(说明)。loadDataFromFile函数:从文件加载记账项数据到vector<AccountItem> 中。accounting函数:记账主函数,根据用户输入的操作调......