Java核心类库篇4——集合

Java核心类库篇4——集合

1、集合的意义

  • 记录单个数据内容时,则声明一个变量
  • 记录多个类型相同的数据内容时,声明一个一维数组
  • 记录多个类型不同的数据内容时,则创建一个对象
  • 记录多个类型相同的对象数据时,创建一个对象数组
  • 记录多个类型不同的对象数据时,则准备一个集合

2、集合的分类

  • 单列集合(Collection)
  • 双列集合(Map)

图片

3、Iterator接口

  • java.util.Iterator接口主要用于描述迭代器对象,可以遍历Collection集合中的所有元素
  • java.util.Collection接口继承Iterator接口,因此所有实现Collection接口的实现类都可以使用该迭 代器对象
方法声明功能介绍
public boolean hasNext()判断集合中是否有可以迭代/访问的元素
public E next()用于取出一个元素并指向下一个元素
public void remove()用于删除访问到的最后一个元素

4、Collection

4.1、方法

方法声明功能介绍
public boolean add(E e)向集合中添加对象
public boolean addAll(Collection c)将参数指定集合c中的所有元素添加到当前集合
public boolean contains(Object o)判断是否包含指定对象
public boolean containsAll(Collection c)判断是否包含参数指定的所有对象
public boolean retainAll(Collection c)保留当前集合中存在且参数集合中存在的所有对象
public boolean remove(Object o)从集合中删除对象
public boolean removeAll(Collection c)从集合中删除参数指定的所有对象
public void clear()清空集合
public int size()返回包含对象的个数
public boolean isEmpty()判断是否为空
public Object[] toArray()将集合转换为数组
public Iterator iterator()获取当前集合的迭代器

4.2、List

方法声明功能介绍
public void add(int index, E element)向集合中指定位置添加元素
public E get(int index)从集合中获取指定位置元素
public int indexOf(Object o)查找参数指定的对象
public int lastIndexOf(Object o)反向查找参数指定的对象
public E set(int index, E element)修改指定位置的元素
public E remove(int index)删除指定位置的元素
public List subList(int fromIndex, int toIndex)用于获取子List

4.2.1、ArrayList

底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素

4.2.2、LinkedList

底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素

特殊方法

方法声明功能介绍
public void addFirst(E e)在该列表开头插入指定的元素
public void addLast(E e)在该列表结尾插入指定的元素
public E getFirst()返回此列表中的第一个元素
public E getLast()返回此列表中的最后一个元素

4.2.3、Vector

底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素

特殊方法

方法声明功能介绍
public void addElement(E obj)将指定的组件添加到此向量的末尾
public E elementAt(int index)返回指定索引处的组件
public Enumeration elements()返回此向量的组件的枚举

4.3、Set

4.3.1、HashSet

采用哈希表实现,元素无序且唯一,线程不安全,效率高,可以存储null元素

4.3.2、LinkedHashSet

采用链表和哈希表共同实现,链表保证了元素的顺序与存储顺序一致,哈希表保证了元素的唯一性。线程不安全,效率高

4.3.3、TreeSet

采用二叉树来实现,元素唯一且已经排好序;唯一性同样需要重写hashCode和equals()方法,二叉树结构保证了元素的有序性

4.4、List和Set总结

  • List特点:元素有放入顺序,元素可重复
  • Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的,加入Set 的Object必须定义equals()方法)
  • list支持for循环,也就是通过下标来遍历,也可以用迭代器
  • set只能用迭代,因为他无序,无法用下标来取得想要的值
  • Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变
  • List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变

5、Map

Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复

5.1、方法

方法声明功能介绍
public void clear()删除所有的映射
public boolean containsKey(Object key)判断此映射是否包含指定键的映射
public boolean containsValue(Object value)判断此映射是否包含指定值的映射
public Set<Map.Entry<K,V> entrySet()Map中所包含的键值对所组成的set集合
public V get(Object key)返回指定key所对应的value,如Map中不包含key则返回null
public boolean isEmpty()判断map是否为空
public Set keySet()返回该Map中所有key所组成的set集合
public V put(K key, V value)向Map中添加一个元素
public void putAll(Map<? extends K,? extends V> m)将指定Map的添加到当前Map
public V remove(Object key)从当前Map移除一个key
public int size()Map的键值对的个数
public Collection values()返回该Map里所有value组成的collection

5.2、HashMap

  • 线程不安全
  • HashMap只可以有一个键位null
  • HashMap可以有无数个键值为null
  • 性能很好

5.3、HashTable

  • 线程安全
  • HashTable无论键值都不能为null
  • 性能差

5.4、TreeMap

非线程安全基于红黑树实现

特殊方法

方法声明功能介绍
public Map.Entry<K,V> firstEntry()最小key的键值对
public K firstKey()最小的key
public K lastKey()最大的key
public K higherKey(K key)返回指定key后一位的键
public K lowerKey(K key)返回指定key前一位的键
public K higherEntry(K key)返回指定key后一位的键值对
public K lowerEntry(K key)返回指定key前一位的键值对

5.5、Map的其他类

5.5.1、LinkedHashMap

  • 使用双向链表来维护键值对的次序
  • 迭代顺序与键值对的插入顺序保持一致
  • LinkedHashMap需要维护元素的插入顺序,性能略低于HashMap,但在迭代访问元素时有很好的性能,因为它是以链表来维护内部顺序

5.5.2、IdentityHashMap

使用==判断key是否相等

5.5.3、WeakHashMap

  • WeakHashMap的key所引用的对象没有被其他强引用变量所引用,则这些key所引用的对象可能被回收
  • WeakHashMap中的每个key对象保存了实际对象的弱引用,当回收了该key所对应的实际对象后,WeakHashMap会自动删除该key所对应的键值对

6、Collections

方法声明功能介绍
public static > T max(Collection coll)根据元素的自然顺序返回给定集合的最大元素
public static T max(Collection coll, Comparator comp)根据指定比较器引发的顺序返回给定集合的最大元素
public static > T min(Collection coll)根据元素的自然顺序返回给定集合的最小元素
public static T min(Collection coll, Comparator comp)根据指定比较器引发的顺序返回给定集合的最小元素
public static void copy(List dest, List src)将一个列表中的所有元素复制到 另一个列表中
public static void reverse(List list)反转指定列表中元素的顺序
public static void shuffle(List list)使用默认的随机源随机置换指定的列表
public static > void sort(List list)根据其元素的自然顺序将指定列表按升序排序
public static void sort(List list, Comparator c)根据指定比较器指定的顺序对指定列表进行排序
public static void swap(List list, int i, int j)交换指定列表中指定位置的元素

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计划任务文件 linux,Linux之任务计划

一、单次任务计划二、周期性任务计划一、单次任务计划命令&#xff1a;batch&#xff1a;系统空闲时自动执行&#xff0c;不常用at&#xff1a;可以使用相对时间、绝对时间或模糊时间&#xff0c;例如相对时间&#xff1a;at now3min&#xff0c;表示3分钟后执行绝对时间&#…

Java核心类库篇8——网络编程

Java核心类库篇8——网络编程 1、七层网络模型 OSI&#xff08;Open System Interconnect&#xff09;&#xff0c;即开放式系统互联&#xff0c;是ISO&#xff08;国际标准化组织&#xff09;组织在1985 年研究的网络互连模型。 当发送数据时&#xff0c;需要对发送的内容按…

linux同花顺乱码,打开同花顺软件全是问号

官方答案&#xff1a;字体库字体乱码【原因分析】&#xff1a;系统字体缺失&#xff0c;损坏。【解决方案】方案一&#xff1a;使用360电脑门诊进行修复1.打开【360安全卫士】—【电脑专家】搜索乱码&#xff0c;然后会弹出如下六个解决方案&#xff0c;根据当前计算机的故障现…

嵌入式linux组件,嵌入式Linux系统的几大组件!

原标题&#xff1a;嵌入式Linux系统的几大组件&#xff01;本文概述了Linux系统的几大组件&#xff0c;描述了这些组件之间的关系。文章解释了术语&#xff0c;并描述看似很基础的细节。每个Linux系统都有许多主要组件。其中一个组件(引导加载程序)从技术上讲是Linux之外的&…

c语言字符串strchr,Strchr()C语言字符串处理功能

strchr()函数不如strcpy()&#xff0c;strcat()&#xff0c;strcmp()&#xff0c;strupr()&#xff0c;strlwr()&#xff0c;strlen()直观c strchr函数&#xff0c;因此需要代码理解:代码来自C语言开发入门和项目实战书:#include#includeint main(){字符字符串[50];char * str&…

Java数据库篇1——数据库配置

Java数据库篇1——数据库配置 1、数据库 数据库(DataBase) 就是存储和管理数据的仓库本质是一个文件系统, 还是以文件的方式,将数据保存在电脑上 2、数据库的优点 存储方式优点缺点内存速度快不能够永久保存,数据是临时状态的文件数据是可以永久保存的使用IO流操作文件, 不…

c语言里寄存器.1说明意思,C语言复习+寄存器地址名称映射

C语言复习寄存器地址名称映射一.参考资料探索者STM32F4开发板&#xff1a;**《STM32F4开发指南-库函数版本》4.1小节C语言基础知识复习4.6小节 MDK中寄存器地址名称映射**STM32F4xx官方资料&#xff1a;《STM32F4xx中文参考手册》-第7章通用IO二.C语言复习位操作GPIOA->ODR|…

android--多线程,android多线程

线程的基本用法&#xff1a;android多线程编程其实并不比java多线程特殊&#xff0c;基本都是使用相同的语法&#xff0c;比如说&#xff0c;定义一个线程只需要新建一个类继承自Thread&#xff0c;然后重写父类的run()方法&#xff0c;并在里面编写耗时的逻辑即可&#xff0c;…

android的ui怎么做到流畅,android提高UI的流畅度

android提高UI的流畅度Android中所有的界面绘制工作都是在UI线程中进行的&#xff0c;提高UI流畅度的最核心根本在于释放UI线程。即:不在主线程中做耗时的操作。很多人都知道&#xff0c;耗时的操作要放到子线程中去做&#xff0c;比如访问网络&#xff0c;比如读写sd卡。像这类…

android商品数量加减,微信小程序实现一个简单的商品数量加减案例

简介这是一个用微信小程序原生代码实现的数量加减demo&#xff0c;主要是用于商品购物车或者商品详情修改数量使用&#xff0c;很简单哦~~~。核心js方法说明addCount(增加数量)delCount (减少数量)getCount(获取数量)实现效果如下图所示&#xff1a;微信小程序实现一个简单的商…

android plugin 镜像,cordova-plugin-screen-orientation

标题说明屏幕方向设置屏幕方向AppVeyor Travis CI Cordova屏幕方向插件Cordova插件以通用方式为 iOS。安卓和 windows UWP设置/锁定屏幕方向。 这个插件基于屏幕定向 API&#xff0c;所以API是当前的规范。插件将以下内容添加到屏幕对象( window.screen ):// lock the device o…

JAVA WEB篇1——初识JAVAWEB

JAVA WEB篇1——初识JAVAWEB JavaWeb主要指使用Java语言进行动态Web资源开发技术的统称&#xff0c;是解决相关Web互联网领域的技术总和 1、Http协议 HTTP协议&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是由W3C&#xff08;万维网联盟…

JAVA WEB篇4——Filter、Listener

JAVA WEB篇4——Filter、Listener 1、Filter Filter本意为”过滤“的含义&#xff0c;是JavaWeb的三大组件之一&#xff0c;三大组件为&#xff1a;Servlet、Filter、 Listener过滤器是向 Web 应用程序的请求和响应处理添加功能的 Web 服务组件过滤器相当于浏览器与Web资源之…

Java SSM1——Maven

Java SSM1——Maven 1、下载 maven 官网&#xff1a;https://maven.apache.org/download.cgi maven 百度云&#xff1a;https://pan.baidu.com/s/18XKbJp7P5x_BkKyc0VF0tw提取码&#xff1a;4zr9 2、安装 解压到想安装的目录下 添加环境变量 添加MAVEN_HOME变量 MAVEN_HO…

2021年广西艺术高考成绩查询,2021年广西美术高考成绩查询网址:https://www.gxeea.cn/...

【导语】2021年广西美术高考成绩查询入口开通后&#xff0c;考生可登录广西教育考试院(https://www.gxeea.cn/)高考服务平台或点击下方链接进入广西美术考成绩查询系统。具体如下&#xff1a;2021年广西美术高考成绩查询入口开通后&#xff0c;考生可以通过黑龙江教育考试院(ht…

齐浩亮 计算机科学与技术,齐浩亮

齐浩亮&#xff0c;男&#xff0c;1972年2月出生&#xff0c;计算机科学与技术系副教授&#xff0c;工学博士。2007年5月获哈尔滨工业大学计算机应用技术专业博士学位。现任黑龙江工程学院计算机应用技术研究所所长&#xff0c;哈尔滨院士专家团成员&#xff0c;YOCSEF哈尔滨20…

Java SSM篇2——框架的基本认识

Java SSM篇2——框架的基本认识 1、什么是框架 框架就是一套规范&#xff0c;既然是规范&#xff0c;你使用这个框架就要遵守这个框架所规定的约束框架可以理解为半成品软件&#xff0c;框架做好以后&#xff0c;接下来在它基础上进行开发 2、为什么使用框架 框架为我们封装…

Java SSM篇3——Mybatis

Java SSM篇3——Mybatis 1、JDBC存在的问题 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能sql 语句在代码中硬编码&#xff0c;造成代码不易维护&#xff0c;实际应用 sql 变化的可能较大&#xff0c;sql 变动需要改变java 代码查询操作时&#xff0c;需要手动将…

在职研究生计算机科学与技术考研考哪些科目,计算机在职研究生考试科目

计算机在职研究生以三种方式来报考&#xff0c;分别是同等学力申硕、中外合作办学硕士、非全日制研究生。三种报考方式考试科目不同&#xff0c;下面为大家具体介绍一下。一、同等学力申硕考试科目&#xff1a;该方式考试科目主要有两科&#xff1a;外国语和学科综合。外国语&a…

Java SSM4——Spring

Java SSM4——Spring Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器&#xff08;框架&#xff09; Spring的优势 方便解耦&#xff0c;简化开发 Spring就是一个容器&#xff0c;可以将所有对象创建和关系维护交给Spring管理 什么是耦合度&#xff1f;对象之间的关…