结构图:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
----------------------------------------------------------------------
Collection接口
Collection是最基本的集合接口,一个Collection代表一组Object,
即Collection 的元素(Elements)。一些Collection允许相同的元素
而另一些不行。一些能排序而另一些不行。
Map接口
请注意,Map没有继承Collection接口,Map提供key到value的映射。
一个Map中不能包含相同的key,每个 key只能映射一个value。
Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,
一组value集合,或者一组key-value 映射。
------------------------------------------------
list接口和set接口区别:
list允许有相同元素,而set不允许
Vector与ArrayList区别:
Vector非常类似ArrayList,但是Vector是同步的。
由Vector创建的Iterator,虽然和 ArrayList创建的Iterator是同一接口,但是,因为Vector是同步的,
当一个Iterator被创建而且正在被使用,另一个线程改变了 Vector的状态(例如,添加或删除了一些元素),
这时调用Iterator的方法时将抛出 ConcurrentModificationException,因此必须捕获该异常。
Stack 类:
Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。
基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。
Stack刚创建后是空栈。
------------------------------------------------
总结
如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。
如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
要特别注意对哈希表的操作,作为key的对象要正确复写equals和hashCode方法。
尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。 相关推荐
Android存储空间不足下,APP出现奔溃等情况
版权声明:本文为博主原创文章,未经博主允许不得转载。 1. 问题起因 实时录制视频,使用getExternalCacheDir()函数返回的路径作为文件缓存区 2. 问题产生 系统在空间不足的情况下第一清除getExternalCacheDir和getCache文件下的缓存,导致正在录制的视频出现Error。 3. 解决方案 第一
集合(详细解析)
JAVA集合
【Python爬虫案例教学】超简洁代码采集原神所有角色信息
(。・∀・)ノ゙嗨 大家好,这里是池鱼
集合详解(小白必看)
集合总结详解,小白必看!
微弱电流检测放大器PCB布线布局设计
微弱电流检测放大器PCB布线布局设计的注意事项,保护环的概念和相关设计。
Python与numpy版本兼容性排查指南
本文详细解析了Python与numpy版本兼容性问题,提供了快速诊断和解决版本冲突的实用方法。通过查看版本信息、使用官方兼容性对照表以及降级或升级环境等方案,帮助开发者有效避免常见的报错问题,如'ImportError'和'AttributeError'。文章还介绍了使用虚拟环境和requirements.txt等工程实践,确保项目依赖的稳定性。
集合详解(1)集合的简单介绍
1.1集合的简介 开发和学习中需要时刻和数据打交道,如何组织这些数据是我们编程中重要的内容。我们一般通过 “容器”来容纳和管理数据。事实上,数组就是一种容器,可以在其中放置对象或基本类型数据。 数组的优势:是一种简单的线性序列,可以快速的访问数组元素,通过索引获取元素效率非常高。 数组的劣势:不灵活!容量事先定义好,不能随着需求的变化而扩容,并且插入和删除操作效率非常低。 比如:我们在一个用户管理系统中,要把今天注册的所有用户取出来,那么这个用户有多少个?我们在写程序时是无法确定的。因此,也就不能使
Selenium ChromeDriver反爬与性能优化实战指南
ChromeDriver作为Selenium的核心驱动,本质是浏览器自动化执行引擎,其默认行为会暴露大量JS运行时指纹(如navigator.webdriver、window.chrome),极易被前端反爬系统识别;同时因进程管理粗放、渲染等待机制僵化,导致内存泄漏、僵尸进程和高并发下稳定性崩塌。本文围绕真实生产场景,系统解析浏览器指纹伪造原理、进程级资源管控策略、基于页面状态的智能等待范式,并提供Docker容器化、K8s弹性扩缩与Prometheus可观测性落地路径,助力开发者将ChromeDriver
JAVA基础 之 集合概述
概述: 1.既然有了数组为什么还需要集合? 数组长度不可变化,当需要保存数量变化的数据时数组就不太适用了 不方便表示映射关系(键值对) 2.java集合分为两大类 Collection和Map,而Collection又分Set和List,这就是我们熟知的java3大集合类 Map、Set、List 3.Map、Set、List区别简...
51单片机STC8G1K08驱动ws2812记录
使用51单片机控制17个2812灯,这里选择STC8芯片,最大频率可以达到35M,参考网上的各种文章案例,使用定时器做的时候实测做不到规格书要求的245-345ns,STC8G1K08不带PWM,所以只能使用nop来做,好在单片机在这里只有做编程灯的功能,省略测试过程,下面是程序,使用的是24MHz内部晶振 //设置一个灯珠 void SendOnePix(unsigned char *ptr) { unsigned char i,j; unsigned char temp; fo...
Vue - 详细实现低代码平台,支持拖曳式可视化生成应用软件功能,用户通过拖拽元素、搭积木的方式创建应用(适合迭代的基础架构、低代码平台)
Vue低代码平台-拖曳式拖拉拽可视化生成应用软件,拖拽式低代码数据可视化开发平台,vue实现拖拽,拖拽式Vue组件代码生成平台,基于vue的可视化拖拽代码生成工具,Vue实现可拖拽组件的方法,一个低代码平台的前端部分,靠拖拉拽生成页面。Vue技术栈从零实现低代码可视化搭建平台示例,低代码轮子,通过拖拽就可生成Vue代码的平台来了,vue低代码平台开发相关比低代码更强大的零代码开发平台,这款低代码SAAS数据可视化工具,拖拽生成大屏。vue实现拖拽效果,Vue自由拖拽缩放组件,自定义组件(文本、图片
集合简介
集合简介集合与列表和元组的区别集合的运算 集合(set)是一个无序的不重复元素序列。 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。 集合与列表和元组的区别 集合只能存储不可变对象 集合中存储对象是无序的 集合中不能出现重复的元素 集合的运算 交际运算& 并集运算| 差集运算- 异或运算^ ...
龙芯2K1000 OTG双模驱动深度解析
是Synopsys公司开发的USB 2.0 OTG控制器IP核,龙芯2K1000内置该IP,作为唯一的OTG控制器(PCI Dev4 Func0),物理基地址0x40000000。核心能力:同时支持Host主机模式(接U盘/键盘)、Device设备模式(虚拟串口ttyGS0)、OTG双模自动切换速率驱动路径:内核源码PMON:启用otg0设备树内核:开启HOSTPERIPHERALG_SERIAL启动参数脚本:sysfs角色切换+开机自启Host按以上配置,龙芯2K1000 DWC2 OTG可完美实现。
Java的集合类介绍
关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。Java基础部分算法与编程数据库部分流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
Java中有哪些集合类?分别介绍一下
Java中有哪些集合类?分别介绍一下
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
Java 中有哪些集合类?请简单介绍
通过理解不同集合类的底层实现与特性,能够根据具体业务场景选择最合适的数据结构,从而优化性能与资源使用。
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
JAVA集合类(介绍)
在使用Java的时候,我们都会遇到使用集合(Collection)的时候,但是Java API提供了多种集合的实现,我在使用和面试的时候频频遇到这样的“抉择”。 :)(主要还是面试的时候)久而久之,也就有了一点点的心得体会,写出来以供大家讨论 。 总的说来,Java API中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下: Collection
Java中集合类的介绍
Collection是List和Set两个接口的基接口 List在Collection之上增加了"有序" Set在Collection之上增加了"唯一" 而ArrayList是实现List的类...所以他是有序的. 它里边存放的元素在排列上存在一定的先后顺序 而且ArrayList是采用数组存放元素 另一种List LinkedList采用的则是链表。 Col
Java集合类介绍
Java 的util包中有一些集合类,这些集合类,又被成为容器,提到集合不难想到数组,数组的长度是固定不变的,集合的长度是可变的,数组用来存放基本数据类型,集合用来存放对象的引用。 下面的图就简单的总结了常见的集合类:...
java 的集合类介绍
java 的集合类介绍 转载出处: java 的集合类介绍 在JDK API中专门设计了一组类,这组类的功能就是实现各种各样方式的数据存储,这样一组专门用来存储其它对象的类,一般被称为对象容器类,简称容器类,这组类和接口的设计结构也被统称为集合框架(Collection Framework)。 这组类和接口都包含在java.u
jdk8集合类汇总介绍
JDK1.8数据存储容器实现类介绍 编辑 这篇主要介绍jdk1.8的一些容器实现类(集合+映射(map))的作用和线程安全与否以及实现线程安全的方式,因为jdk提供的集合类挺多的,所以篇幅有些长,大家可以跳常用的几个看如ArrayList、HashMap、ConcurrentHashMap等。 特殊词汇说明: 1)cas操作:Compare and Swap或者Co
简单介绍Java集合类
先说说为什么要用带Java的集合类? 在Java中集合就是用来存储数据的,有人说了可以用数组啊。没错,的确可以用数组, 但是如果你不知道你要存放的数据有多少的长度,那你该怎么存呢?也有人会说直接分配一个较大的内存空间就行了, 这说法也没有错。可是这样一来就极大的浪费内存的预留空间,所以就产生了集合这样的一个机制。 因为如果你不清楚你要存放数据的个数,或者想要比数组存放
JAVA集合类介绍
二:集合类 1:为什么出现集合类? .面向对象语音对事物的体现都是以对象的形式,所以为了方便对多个对象的操作, 就对对象进行存储,集合就是存储对象最常用的一种方式。 2:数组和集合类都是容器,有何不同? .数组虽然也可以存储对象,但长度是固定的:集合长度是可变的。 .数组中只可以存储基本数据类型,集合只能存储对象。 3:集合的特点 .集合只用于存储对象,集合
Java集合类基础介绍
初始了解的知识 1、集合类都是在java.util包中; 2、集合类主要分为两种:Collection集合类和Map集合类 3、Collection接口集合类分类:List、Queue、Set; 4、List集合的实现类:ArrayList、LinkedList、Vector; 5、Queue:用LinkedList实现双端队列、PriorityQueue:基于堆结构实现,可以用它来实现优先队列...
4160



被折叠的 条评论
为什么被折叠?



