什么时候用List、Set或Map(Java中的集合框架体系)_业务开发什么时候使用list-程序员宅基地

技术标签: java  ┉┇Java基础  

集合框架体系

集合是Java中提供的一种容器,可以用来存储多个数据;

而由于存储的方式不同,就形成了很多不同的体系结构,统称为集合框架体系。

List

ArrayList

1、排序有序,可重复

2、底层使用数组

3、查询快,增删慢

4、线程不安全

5、当容量不够时—>当前容量*1.5 + 1

LinkedList

1、排列有序,可重复

2、底层使用链表

3、查询慢,增删快

4、线程不安全

Vector

1、排序有序,可重复

2、底层使用数组

3、查询快,增删慢

4、线程安全

5、当容量不够时—>默认扩容一倍

Set

HashSet

1、排列无序,不可重复

2、底层使用Hash表

3、存取速度快

4、内部是HashMap

TreeSet

1、排序无序,不可重复

2、底层使用二叉树

3、内部是TreeMap的SortedSet

LinkedHashSet

1、用Hash表存储,并用双向链表记录插入顺序

2、内部是LinkedHashMap

一般,线程不安全,效率会高,反之亦然。

Map

HashMap

1、键不可重复,值可重复

2、底层:

      在JDK1.7中,由”数组+链表“组成

      在JDK1.8中,有“数组+链表+红黑树”组成

3、线程不安全

4、key的值可以为null,value也可为null

HashTable

1、键不可重复,值可重复

2、底层是哈希表

3、线程安全

4、key、value都不能为null

TreeMap

1、键不可重复,值可重复

底层是二叉树

小结:
List、Set、Map选用
在存储元素时,是否需要给元素起名呢
{ 需要:用Map
{ 不需要:List、Set
    { 存储的元素需要考虑先后添加的顺序吗
    { 需要:用List
    { 不需要:用Set

如果需要保证集合元素不重复,也选用Set

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45764765/article/details/105134807

智能推荐

Linux驱动学习--BT框架一之Bluez、BlueDroid框架介绍_bluez和bluedroid-程序员宅基地

文章浏览阅读2.9k次。一、引言之后的项目可能要用到蓝牙,所以打算先吧蓝牙相关的框架都了解整理一下二、整体框架整体框架可以抽象成以下1、驱动层通常蓝牙芯片是通过某个类型的接口与协议栈通讯,接口包括(UART、USB等)2、bluez层bluez为Bluetooth协议栈,往下对接内核代码,往上为用户态程序及工具集而内核代码分为:BlueZ核心协议和驱动程序2.1 BlueZ核心协议位于kernel/net/bluetooth中其中包含hci,l2cap,hid,rfcomm,sco,SDP,BNEP等_bluez和bluedroid

VB 颜色本色工具_vb 底 色 浅-程序员宅基地

文章浏览阅读633次。Option Explicit'('aliceblue', 'F0F8FF', '艾利斯兰')'('antiquewhite', 'FAEBD7', '古董白')'('aqua', '00FFFF', '浅绿色')'('aquamarine', '7FFFD4', '碧绿色')'('azure', 'F0FFFF', '天蓝色')'('beige', 'F5F5DC', '米色')'('bisque', 'FFE4C4', '桔黄色')'('black', '000000', '黑色..._vb 底 色 浅

kdump+crash 解决死机问题 全局变量及malloc堆变量的获取_crash 查看全局变量-程序员宅基地

文章浏览阅读130次。目录1、实验目的2、实验步骤3、全局变量解析思路4、kernel内部全局变量获取5、模块化驱动全局变量5.1、 p 命令打印模块化全局变量错误5.2、sym/rd + struct 命令解析xxx.ko中的全局变量 5.3、使用rd命令解析xxx.ko中的全局变量环境:arm64,Linux version 5.10.66 使用crash解析全局变量 KdumpStack_st stKdumpStack 实验程序如下,当程序编译成ko并使用insmod加载到设备后,串口输入 echo kdum_crash 查看全局变量

sqoop1 import 时报错Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject-程序员宅基地

文章浏览阅读1.5k次,点赞4次,收藏3次。如题,sqoop1 import 时报错Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject。这是因为sqoop缺少java-json.jar包.去http://www.java2s.com/Code/Jar/j/Downloadjavajsonjar.htm下载,然后放到sqoop/lib..._exception in thread "main" java.lang.noclassdeffounderror: org/json/jsonobje

Node.js:入门资料-程序员宅基地

文章浏览阅读106次。 《快速搭建 Node.js 开发环境以及加速 npm》http://fengmk2.com/blog/2014/03/node-env-and-faster-npm.html《Node.js 包教不包会》https://github.com/alsotang/node-lessons《ECMAScript 6入门》http://es6.ruanyifeng.com/...

为什么新闻稿发布效果不明显?_新闻发布会为什么没有起到很好的作用-程序员宅基地

文章浏览阅读181次。为什么新闻稿发布效果不明显?1、网络媒体关系网络媒体与传统媒体相比更加的自由、没有地域限制、传播速度更快更广,一则新闻可以瞬间传遍全世界,所以互联网媒体记者与传统媒体记者一样值得企业宣传部门的重视,建立网络媒体公共关系、整合媒体资源,对于企业来说是非常有必要的。建立网络媒体关系,可以自行建立媒体关系,也可以与网络营销公司合作。自行建立媒体关系,需要有专业的媒介人才,如果利用率不够高的话,可能还不如与网络营销公司合作,网络营销公司有专业的媒介团队,负责各方面媒体的对接、维护,媒介执行工作做起来轻车熟路,_新闻发布会为什么没有起到很好的作用

随便推点

动态调用动态链接库(.dll),包括函数和类的调用-程序员宅基地

文章浏览阅读1.9w次,点赞12次,收藏86次。C++,动态链接库的动态调用,以及如何动态调用库中的函数和类。_调用动态链接库

文字小游戏-程序员宅基地

文章浏览阅读335次。练习一1、定义主函数main()  实现输入名字,通过format格式化字符串2、运行main()# -*- coding: UTF-8 -*-def main(): name = input('请输入名字:') other_name = input('请再输入名字:') print('{}去买车,需要10万元,可{}只带了现金99998元,就差..._文字小游戏

多个Filter的执行顺序 | 职责链模式应用_多个filter执行顺序-程序员宅基地

文章浏览阅读5.8k次,点赞2次,收藏6次。Filter(过滤器) 是 Java Servlet 规范中定义的一种组件,用于在请求到达 Servlet 之前或响应返回给客户端之前对请求和响应进行处理。Filter 可以设置多个,并且按照一定顺序依次执行,这是因为使用了设计模式中的职责链模式。_多个filter执行顺序

bug是什么意思详细介绍-程序员宅基地

文章浏览阅读8.3w次。我们在网上冲浪的时候,一定都听说过bug这个词吧,不过大多数人对bug是什么意思只是一知半解,并不清楚具体的情况,今天我们就给大家来说道说道,详细解释一番。_bug是什么意思

selenium之select_selenium select-程序员宅基地

文章浏览阅读2.9k次。selenium之select_selenium select

测试之Bug与用例【创建Bug、Bug级别、Bug生命周期、测试用例的万能公式、设计测试用例具体方法】_软件测试bug级别和对应处理时效-程序员宅基地

文章浏览阅读2.8k次,点赞56次,收藏60次。1. 如何创建Bug2. Bug的级别3. Bug的生命周期4. 面试题:跟开发产生争执怎么办5. 设计测试用例的万能公式使用万能公式对水杯设计测试用例6. 设计测试用例的具体方法6.1 等价类6.2 边界类6.3 判定表6.4 正交法(allparis)6.5 场景设计法_软件测试bug级别和对应处理时效

推荐文章

热门文章

相关标签