双非硕转测试之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

相关文章

springboot健康检查监控全过程

《springboot健康检查监控全过程》文章介绍了SpringBoot如何使用Actuator和Micrometer进行健康检查和监控,通过配置和自定义健康指示器,开发者可以实时监控应用组件的状态,... 目录1. 引言重要性2. 配置Spring Boot ActuatorSpring Boot Act

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

java如何分布式锁实现和选型

《java如何分布式锁实现和选型》文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zo... 目录引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求

SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

《SpringBoot基于MyBatis-Plus实现LambdaQuery查询的示例代码》MyBatis-Plus是MyBatis的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方... 目录引言基础环境配置依赖配置(Maven)application.yml 配置表结构设计demo_st

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python