首页 > 编程语言 >java基础的集合框架介绍

java基础的集合框架介绍

时间:2023-12-02 09:22:05浏览次数:46  
标签:java 框架 ArrayList collection vector 线程 数组 集合

集合概念

什么是集合?

集合:集合是一组用来存放数据对象的容器。
特点:存放的数据是对象。
对比数组:
1、数组初始化后,其长度不可以再被改变,也就是说数组存放数据的个数是事先确定的。
2、数组中对于插入元素和删除元素的操作是很繁琐的,因为涉及到了数组元素的移位操作。
3、数组存放数据的方式是有序的,可重复的,而对于那些需要去掉重复数据的需求就无法满足了。
但是对于数组以上的三点缺陷,在集合中就得到了很好的解决。

集合的分类

集合可分为两大类:单例集合和双例集合。

什么是单列集合?

单例集合:每次以单个对象的形式将数据存放到集合中。

什么是双列集合?

双列集合:每次以两个对象为一组的形式将数据存放到集合中,用来存储键值对对象,其中键具有唯一性,而值是可以重复的。

集合分类示意图

 

简介

Collection: 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。

常用的三种List集合

ArrayList集合:

ArrayList的底层结构:
1.该集合是一个数组,根据下标定位元素快,增加、删除操作需要数组的移位,第一次创建集合并添加一个元素时,底层就会创建一个大小默认为10的数组,
3.该集合的默认长度就为10,
4.该集合查询的效率高。
5.如果新增超过10,那么他会自动扩展1.5倍。
6.该集合的线程不安全。

LinkedListLinkedList的底层结构:
1.是一个双向链表,可以充分利用碎片化空间进行存储,查找,修改数据及删除数据,因为都要遍历整个链表。
2.此集合为链表集合,该集合修改,删除数据效率高。
3.该集合的线程不安全。

vector

vector的底层结构:面试题;vector与ArrayList的区别?
1、底层的扩容机制不同:vector扩容为原数组的两倍,而ArrayList扩容为原数组的1.5倍。
2、内部实现机制不同:vector类的操作方法采用的都是synchronize同步处理,线程安全但效率低。ArrayList类的操作方法却并没有采用synchronize同步处理,线程不安全但效率高。
3.该集合的线程安全。

标签:java,框架,ArrayList,collection,vector,线程,数组,集合
From: https://www.cnblogs.com/xlypl/p/17871246.html

相关文章

  • 深入理解Async/Await:从原理到实践的JavaScript异步编程指南
    理解async/await的原理和使用方法是理解现代JavaScript异步编程的关键。这里我会提供一个详细的实例,涵盖原理、流程、使用方法以及一些注意事项。代码注释会尽量详尽,确保你理解每个步骤。实例:使用async/await进行异步操作<!DOCTYPEhtml><htmllang="en"><head><metacha......
  • .net 下优秀的DI框架推荐,看看你用过几个?
    在.NET生态系统中,有许多出色的依赖注入(DI)框架可供选择。每个框架都有其独特的特点和优点,可以根据项目需求和偏好进行选择。下面详细介绍一些.NET中优秀的DI框架,它们的优点以及适用场景。1、Microsoft.Extensions.DependencyInjection:官方支持:Microsoft.Extensions.DependencyIn......
  • Java 基础语法:语法、变量与运算
    第一章:Java入门第二章:基础语法、变量一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴......
  • Java之API详解之Biginteger类的详解
     6BigInteger类6.1引入平时在存储整数的时候,Java中默认是int类型,int类型有取值范围:-2147483648~2147483647。如果数字过大,我们可以使用long类型,但是如果long类型也表示不下怎么办呢?就需要用到BigInteger,可以理解为:大的整数。有多大呢?理论上最大到42亿的21亿次方基本上在内存撑......
  • java BigDecima
    packagenet.elaina.BigDecimaTest;importjava.math.BigDecimal;publicclassTest1{publicstaticvoidmain(String[]args){/*构造方法获取BigDecimal对象publicBigDecimal(doubleval)publicBigDecimal(Stringval)静态方法获......
  • 【Java】嵌入式版东方通Web容器中台后端项目静态资源访问
    嵌入式东方通Web版本:7.0.E.6_P3~ 7.0.E.6_P6首先直接说结论,内置化东方通Web容器的基准版本较低。对静态资源访问配置必须使用一下语法#静态资源访问配置spring:resources:static-locations:classpath:/resources/,classpath:/static/,file:/opt/app/FileRo......
  • java BigInteger
    packagenet.elaina.BigIntegerTest;importjava.math.BigInteger;importjava.util.Random;publicclasstest1{publicstaticvoidmain(String[]args){/*publicBigInteger(intnum,Randomrnd)获取随机大整数,范围:[e~2的num次方......
  • 【开源】基于JavaWeb的网上药店系统
    一、摘要1.1项目介绍基于JAVA+Vue+SpringBoot+MySQL的网上药店系统,包含了药品类型模块、药品档案模块、药品收藏模块、药品订单模块、药品资讯模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,网上药店系统基......
  • 【Java基础】正则表达式
    正则表达式一般面向搜索引擎编写正则表达式举例StringqqRegex="[1-9]\\d{4,11}";System.out.println("02333133".matches(qqRegex));StringtelRegex="[1][3-9]\\d{9}";System.out.println("13111111a31".matches(telRegex));String......
  • python网站创建008:初始JavaScript
    JavaScript:是一门可以操作html标签的一门语言。可以实现类似“弹框”的功能 实现需求:假如我想在一个输入框内输入“helloworld”,点击某个按钮,然后在“弹框”上显示出“helloworld”,这该怎么做呢? 1.首先将“输入框”和“点击”按钮写出来,如下:<!DOCTYPEhtml><html><he......