集合(collection)

Java集合——List接口 计算机的优势在于处理大量的数据,在编程开发中,为处理大量的数据,必须具备相应的存储结构,数组可以用来存储并处理大量类型相同的数据,但是数组有长度、数据类型的限制,操作不方便。在实际开发中,为了操作方便,JDK中提供了集合数据存储结构。。Java中的集合使用Collection接口和Map接口表示,其中Collection接口下还有两个子接口,分别是List和Set。 阅读详情

一、简述

集合是一个容器,用来存储一组对象(元素类型可以不同、集合长度可变、空间不固定)。

1️⃣Java 集合操作相关的接口和类定义在java.util包中。
2️⃣Collection 接口存储的是一组无序,不唯一的对象。
3️⃣Collections 工具类提供对集合的系列操作。
4️⃣List 接口存储一组有序,不唯一的对象。List 接口的典型实现类有 ArrayList(基于数组实现), LinkedList(基于链表实现)。
5️⃣Set 接口存储一组无序, 唯一的对象。Set 接口的典型实现类有 HashSet(哈希表实现),TreeSet(排序实现)。
6️⃣Map 接口存储从键(key)到值(value)的映射。Map 接口的典型实现类有 HashMap,TreeMap。

二、List 接口

1️⃣常用方法

add(Object)
add(int, Object)
remove(int)
remove(Object)
contains(Object)
get(int)
size()
clear()

2️⃣遍历方式

1.传统下标方式

for(int i=0; i<list.size();i++){}

2.forEach 循环

for(Object object : list){}

3.迭代器

Iterator it = list.iterator();
while(it.hasNext()){
Object object = it.next();
}

3️⃣两种典型实现的比较

ArrayList:基于数组实现,遍历元素/随机访问元素效率较高,但插入/删除元素效率较低。
容量增长规律:每次增长现有容量的一半+1

LinkedList:基于链表实现,遍历元素/随机访问元素效率较低,但插入/删除元素效率较高。

4️⃣特有的方法:

addFirst()
addLast()
removeFirst()
getFrist()

注意:不能用 List 类型的变量来调用这些方法。

5️⃣Vector:基于数组实现,但它是线程安全的,所以它的效率低于ArrayList。

三、iterator 与 iterable

1️⃣Iterator 是迭代器,负责具体的循环迭代工作。
2️⃣Iterable 表示可迭代的,Collection 接口继承了 iterable 接口,只要实现了 Iterable 接口的集合类都是可以被迭代的。
3️⃣Iterable 接口中定义了 iterator(),它返回 Iterator 实例。

四、泛型集合

ArrayList 在添加元素时,接受 Object 类型的参数,这里发生了装箱(向上转型为 Object)操作;在调用 get() 获取元素时,返回的是 Object 类型的元素,这里可能需要拆箱(Object 向下转型为实际的类型)操作;但实际上这个元素可能是 String、Account…这就造成了装拆箱的性能损耗及类型转换时可能发生的错误。JAVA5 后,通过泛型解决了这个问题。

注意:装箱前的原始类型是什么,拆箱后就只能是什么。Java5 后,各种集合类型的定义都是泛型的。泛型集合的优势:

  1. 编译期类型检查,更安全。
  2. 不拆箱不装箱,性能提高。

五、Set 接口

1️⃣Set 接口不允许重复元素,判断重复的依据是 equals + hashCode。

2️⃣HashSet 是基于 HashMap 的实现。

3️⃣TreeSet 是基于 TreeMap 的实现,它要求元素要实现 Comparable 接口或者在构造 TreeSet 时,传入一个 Comparator。

六、Comparator 与 Comparable

这两个接口都是用于对象间比较大小的。

Comparable 接口定义的是对象自身和别的同类对象之间的比较过程。 其用法:

class XXX implements Comparable{
    public int compareTo(XXX another){
    }
}

Comparator 接口定义的是两个同类对象之间的比较过程。 其用法:

new Comparator(){
    public int compare(XXX o1, XXX o2){
    }
}

相比而言,Comparator 要更灵活。

七、Map 接口

Map 用于存储键值对。Key 不能重复,一旦重复,覆盖原有的 Value。典型实现类: HashMap、TreeMap。

Map常用方法:

put(K,V)
get(K)
remove(K)
size()
containsKey(K)
containsValue(V)
keySet()
values()
entrySet()

OneNET物模型实战:如何用NB-IOT模块上传JSON数据并解析 本文详细介绍了如何利用NB-IOT模块将传感器数据上传至中国移动OneNET物联网平台,并利用其物模型功能实现JSON数据的自动解析。文章从理解OneNET物模型与OneJson协议入手,逐步讲解了平台侧物模型创建、设备注册,以及设备端数据构造、HEX编码与NB-IOT模块AT指令上报的全流程,并提供了关键的调试技巧与常见问题排查方法,为物联网开发者提供了完整的实战指南。 阅读详情

相关推荐

WKWebView 白屏问题,WKWebView request body丢失问题

1,WKWebView 白屏问题 WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一个多进程组件,Network Loading 以及 UI Rendering 在其它进程中执行。初次适配 WKWebView 的时候,我们也惊讶于打开 WKWebView 后,App 进程内存消耗反而大幅下降,但是仔细观察会发现,Other Process 的内存占用会...

weixin_37543822的博客 734

List接口

List接口 Collection接口是最基本的集合接口,可以存储一组不唯一、无序的对象 List接口继承自Collection接口,是有序集合 List接口的实现类 ArrayList类 LinkedList类 ArrayList类 ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高。 ``` 1. ArrayLi...

荣华的博客 3775

微信DAT图片恢复全攻略:从文件定位到批量解密(附最新路径变化)

本文提供了一份详尽的微信DAT图片恢复指南,涵盖新旧版本文件路径变化解析、DAT文件定位方法以及批量解密操作步骤。针对微信图片加密存储为DAT格式的痛点,文章介绍了高效易用的图形化解密工具,帮助用户将加密文件快速还原为JPG、PNG等可查看格式,并强调了数据安全与隐私保护的重要性。

p4q5r6s7t的博客 742

Java集合框架概述(一)——List接口要点详述

集合(Collection):集合是对象的容器,存储对象的对象,可代替数组。·集合也是容器的工具类,定义了多个对象进行操作的方法。 框架(Framework):框架是一组类和接口 Collection体系集合 图片资源来源于:https://www.javastudypoint.com/2019/02/collection-framework-in-java.html Col...

LukeyAlvin的博客 2066

OV5640调试大坑,关于binning、RES分辨率与EV曝光

OV5640在使用binning模式时,必须考虑使用场景,分辨率下降叠加动态范围压缩,会使目标对象细节在高光环境下大量丢失,2x2的binning模式,分辨率会远低于感光面积的1/4。

chongyun_的专栏 1822

ArcGIS Pro 3.4 二次开发 - 布局

本文介绍了在ArcGIS Pro SDK 3.4和.NET 8环境下操作布局工程项的相关方法。主要内容包括:引用布局工程项和关联布局,在新视图中打开或激活已有布局视图,引用活动布局视图,导入/移除布局工程项,创建基本布局或带参考线的自定义布局,修改布局页面尺寸,以及创建圆形图形元素等操作。重点演示了如何通过CIM(Core Infrastructure Model)进行高级布局配置,并详细说明了圆形图形元素的创建过程,包括几何构建、符号设置和图形生成。所有涉及UI线程的操作都遵循ArcGIS Pro SDK

Winemonk 794

Java基础(5)-List接口的实现

1.容器(Collection) 之前学的数组就是一个容器,他也可以存储各种不同类型的数据,但是他有长度限制;

孤独的狂欢 205

手把手教你用git上传项目到GitHub(图文并茂,这一篇就够了),相信你一定能成功!!

GitHub是基于git实现的代码托管。git是目前最好用的版本控制系统了,非常受欢迎,比之svn更好。 GitHub可以免费使用,并且快速稳定。即使是付费帐户,每个月不超过10美刀的费用也非常便宜。 利用GitHub,你可以将项目存档,与其他人分享交流,并让其他开发者帮助你一起完成这个项目。优点在于,他支持多人共同完成一个项目,因此你们可以在同一页面对话交流。 创建自己的项目,并备份,代码不需要保存在本地或者服务器,GitHub做得非常理想。 学习Git也有很多好处。他被视为一个预先维护过程,你可以按自己

左手の明天的博客 3万+

集合—Collection集合

1.Collection是单列集合的顶层接口,所有方法被List和Set系列集合共享2.常见成员方法:add、clear、remove、contains、isEmpty、size3.三种通用的遍历方式:迭代器:在遍历的过程中需要删除元素,请使用迭代器。增强for、Lambda:仅仅想遍历,那么使用增强for或Lambda表达式。

cumzxcv的博客 1267

12027.linux flash驱动之IS25LP01G/IS25WWP01G

一页:512字节 --> 扇区 4096字节 --> 块 32k,64k, 层层递进关系。

写给自己的笔记 2288

STM32硬件SPI配置为全双工模式下不要单独使用HAL_SPI_Transmit API及HAL_SPI_TransmitReceive改造方法

STM32 HAL库中SPI全双工模式使用问题总结:当配置为全双工模式时,单独使用HAL_SPI_Transmit会导致后续接收数据异常,原因是该API未处理接收数据。改造HAL_SPI_TransmitReceive使其支持单纯的发送/接收模式:当pTxData为NULL时只关心接收数据,pRxData为NULL时只关心发送数据,但仍会保持全双工通信。建议在全双工模式下统一使用改造后的HAL_SPI_TransmitReceive函数。

kevin1499的博客 900

Collection集合

集合是一种容器,类似于数组,但集合大小可变-------每个元素(数据)只包含一个值------每个元素包含两个值(键值对)无索引无索引。

m0_67357923的博客 1187

FAST-LIO论文公式解析

FAST-LIO论文公式解析

努力努力努力 668

java集合进阶篇-《Collection集合》

java中的集合也是一个重点,同样也是难点,涉及到的东西较多较杂,希望大家能够和我一起来学习java集合进阶方面的知识。预计一周的时间将java集合进阶部分拿下,加油。在Java中,是一个接口,它是所有Java集合框架的根。它定义了集合类必须实现的基本操作,如添加元素、删除元素、迭代等。所有的集合类(如ListSetQueue等)都是Collection接口的直接或间接实现。

欢迎大家一起讨论交流 1053

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Collection集合遍历

Collection集合遍历 一、集合(Collection)接口的介绍 1.1数组和集合的区别: 1:长度的区别:数组的长度固定集合的长度可变 2:内容:数组存储的是同一种类型的元素集合可以存储不同类型的元素(但是一般我们不这样干…) 3:元素的数据类型:数组可以存储基本数据类型,也可以存储引用类型集合只能存储引用类型(你存储的是简单的int,它会自动装箱成Integer) 1.2关系图 1.3 Java集合框架的接口: (1)Java集合框架的实现类: (2)应用场景: List基础知识 co

Pluto372的博客 968

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

集合框架之1:Collection集合

集合是一种容器,用来装数据的,类似于数组,但集合的大小可变,开发中也非常常用。遍历集合的同时,又进行了增、删集合元素的行为,这时候就可能出现异常,就称之为“并发修改异常问题”。//演示“并发修改异常问题”//目标:解决并发修改异常问题list.add("Java入门");list.add("宁夏枸杞");list.add("黑枸杞");list.add("人字拖");list.add("特级枸杞");list.add("枸杞子");list.add("西洋参");

casually的博客 1256

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java中集合框架详解之Collection集合

不再考虑equals() 和 hashCode()方法了,即添加到TreeSet中的元素所在的类不需要重写 equals() 和 hashCode()。原因:因为Collection中的相关方法(比如contains() / remove())在使用中,要调用元素所在类的equals().比较元素的大小或比较元素是否相等的标准就是考虑自然排序或定制排序中,compareTo()和compart()的返回值。比较的标准,需要判断hashCode()得到的哈希值以及equals()得到的boolean型结果。

weixin_45535916的博客 1850

java集合之——Collection接口

前言 老师在教我们学习集合的时候,大多都是以数组为砖,列举了对象数组有那些问题?比如普通的对象数组的最大问题在于数组中的元素个数是固定的,不能动态的扩充大小,所以最早的时候可以通过链表实现一个动态对象数组。但是这样做毕竟太复杂了,所以在 Java 中为了方便用户操作各个数据结构,所以引入了类集的概念,有时候就可以把类集称为 java 对数据结构的实现。 在整个类集中的,这个概念是从 JDK 1.2(Java 2)之后才正式引入的,最早也提供了很多的操作类,但是并没有完整的提出类集的完整概念。 类集中最大的几

you do ,you win 4310

Collection集合框架

java的集合框架 java.util.Collection接口 Collection是所有集合的顶级接口,里面规定了集合操作元素的相关功能方法集合与数组一样,用于存储一组元素,但是集合又多个不同的实现类来实现不同的数据结构 Collection下面有两个常见的值接口 java.util.List:线性表,特点:可以存放重复元素并且有序,可以通过下标操作 java.util.Set:不可以重复的集合 这里的重复元素判定是依靠元素自身equals方法比较的结果而定 List常见的实

qi15689782508的博客 3321

JAVA学习-集合-Collection

认识集合,操作集合。

LOVEcao_YU的博客 978

单列集合——Collection集合

Collection集合是最上层的接口,是所有集合的父接口 概述: Collection集合是最上层的接口,是所有集合的父接口,collection接口下面有list和set接口,还有一些单例集合的共用方法,没有带索引的方法 一、collection集合图解 二、collection共性方法: java.util.Collection接口 所有单列集合的最顶层的接口,里边定义了所有单列集合共性的方法 任意的单列集合都可以使用Collection接口中的方法 ...

weixin_66298004的博客 266

Collection集合概述

Comparable:位于包java.lang下,是在集合内部定义的方法,该接口中有一个抽象方法要求实现类重写,定义该类元素之间的大小关系,java中很多常用的类都实现了它,比如String,包装类。将当前集合转换为数组,该方法要求传入一个数组,如果该数组可以用(数组长度>=集合的size时)会将当前集合元素存入该数组后再将该数组返回。所有的集合元素都支持一个参数类型为Collection的构造方法,作用是在创建当前集合的同时包含给定集合中的所有元素。

weixin_66107850的博客 337

Java集合Collection

/注意:是否包含底层是通过equles方法实现的,如果判断是否包含自定义类,需要重写equles方法,否则。//所以使用多态的方式通过创建Collection的实现类ArrayList来使用它的方法。//删除成功true。//调用的是Object中的equles,它比较的是地址值而不是类的属性。//因为Collection是接口,无法创建对象。//学习Collection常用方法。//4、判断是否为空。List系列集合:添加的元素是。

hyacinth_W的博客 200
上一篇: 【线程通信】生产者-消费者模式
下一篇: JDK7 和 JDK8 的 HashMap
JFS_Study
博客等级 码龄6年 363粉丝 359原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JFS_Study

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值