双非硕转测试之Java学习笔记(一):集合

2024-04-02 15:52

本文主要是介绍双非硕转测试之Java学习笔记(一):集合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Java学习-----集合

  • 简单概括
  • 单列集合--collection
    • list接口:
    • vector类:
    • LinkedList类:
    • set接口:
    • HasSet类:
    • LinkedHashSet类:
  • 双列集合--Map
    • Map接口:
    • HashMap类:
    • HashTable类:
    • Properties类:

简单概括

  1. 集合的定义:集合是一个容器,可以容纳多个对象,并且可以动态的增加。
  2. 集合的目的:解决数组无法动态增加的缺点,并且提供多种方法进行crud等等。
  3. 集合的分类:单列集合–collection,和双列集合map。

collection集合包含的子类和接口

单列集合–collection

collection接口进行遍历的方法:

1.通过迭代器 Iterator,原理如下图

在这里插入图片描述

2.增强for循环,原理如下图

在这里插入图片描述

list接口:

定义:是collection接口的子接口,这就意味着list可以继承collection的方法。
常用方法:add、addAll、get、indexOf、remove、set、subList等等。
子类:ArrayList、vector、LinkedList。
ArrayList类:
1.这里需要注意其扩容机制,如下图所示:
在这里插入图片描述 2.线程不安全,所以效率高。

vector类:

1.底层 是一个对象数组。
2.线程同步的,也就是线程安全,但是效率没有ArrayList高。
3.ArrayList和vector的比较,如下图:
在这里插入图片描述

LinkedList类:

1.底层实现了双向链表和双端队列的特点。
2.线程不安全,没有实现同步。
3.ArrayList和LinkedList的对比,实际上可以看做链表和数组的区别,如下图:
在这里插入图片描述

set接口:

定义:是collection接口的子接口,无序,不允许重复元素。
常用方法:和collection接口一样。
子类:HashSet、TreeSet。

HasSet类:

1.底层实际是HashMap,而HashMap的底层是数组+链表+红黑树实现的。
2.之所以是无序的,是因为元素存放的位置是基于哈希值计算得到的,因此无法确定索引的结果。
3.原理如下图所示
在这里插入图片描述
4.关于HashSet的扩容机制,如下图所示:
在这里插入图片描述

LinkedHashSet类:

1.是HashSet的子类,意味继承lHashSet的方法。
2.LinkedHashSet的底层是LinkedHashMap,底层是通过数组和双向链表实现的。
3.因为链表的存在,LinkedHashSet可以确保遍历的顺序和插入顺序一致。

双列集合–Map

map集合包含的z子类

Map接口:

1.Map与Collection是并列的关系,不存在继承关系
2.Map中的元素是以键值对的方式保存的,不可以重复。
3.Map中的键值对的关系是一对一的,通过key值就能获得value值。
4.Map接口的遍历方法有多种,也比较复杂,这里只介绍一种,通过KeySrt的方式获取所有的键:Set keySet = map.Set();再通过key值取得对应的value值。
5.常用方法:put、get、remove、size、isEmpty、clear等等。
5.子类:HashMap、HashTable、Properties。

HashMap类:

1.方法实现Map接口的方法。
2.关于扩容机制:

  1. 先判断table是否为null,为空则为数组扩容(16)。
  2. 通过hash得到一个索引位置,如果为空则直接挂上去。
  3. 修改次数++。
  4. 计算table目前存放元素的个数,并且和临界值判断,如果大于则要扩容。
  5. 当索引位置冲突时,就判断如果哈希值和(key值或者value值)相等,就直接替换了。
  6. 如果哈希值和key值或者value值有一个不相等,就判断是否是红黑树,如果是则按红黑树的规则添加。
  7. 如果是链表,加入的元素则要挨个与链表中的元素判断,不相等则还要判断是否需要树化,不需要就直接加在后面,元素相等的话就直接break,放弃插入。

HashTable类:

1.方法基本和HashMap一致,都实现了Map接口的方法。
2.是线程安全的,而HashMap是线程不安全的。
3.不允许存在null键值。

Properties类:

1.使用特点和HashTable类似。
2.通常用作配置文件。

这篇关于双非硕转测试之Java学习笔记(一):集合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/870404

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis