Day22初识集合

Day22初识集合

一、集合

1、概念: 集合是指将多个元素组合在一起的数据结构。在编程中,集合用于存储和操作一组相关的数据对象。与数组相比,集合具有更灵活、动态和高级的功能。

2、常见的集合类:

  1. List(列表):
  • ArrayList:基于数组实现的动态数组。
  • LinkedList:基于链表实现的双向队列。
  • Vector:线程安全的动态数组。
  1. Set(集):
  • HashSet:基于哈希表实现的无序集合。
  • LinkedHashSet:具有可预测迭代顺序的集合。
  • TreeSet:基于红黑树实现的有序集合。
  1. Queue(队列):
  • LinkedList:基于链表实现的队列。
  • PriorityQueue:基于堆实现的优先级队列。
  1. Map(映射):
  • HashMap:基于哈希表实现的键值对映射。
  • LinkedHashMap:具有可预测迭代顺序的键值对映射。
  • TreeMap:基于红黑树实现的有序键值对映射。
  1. Stack(栈):
  • Stack:基于向量实现的后进先出(LIFO)

二、ArrayList的使用

1、概念: ArrayList是Java集合框架中的一个动态数组实现类,它提供了便捷的方法来操作和管理元素 。

2、用法:

  1. 导入ArrayList类
import java.util.ArrayList;
  1. 创建ArrayList对象
ArrayList<String> list = new ArrayList<>();
  1. 添加元素
list.add("Apple");
list.add("Banana");
list.add("Orange");
  1. 获取元素
String fruit = list.get(1); // 获取索引为1的元素("Banana")
  1. 修改元素
list.set(0, "Mango"); // 将索引为0的元素修改为"Mango"
  1. 删除元素
list.remove(2); // 删除索引为2的元素("Orange")
  1. 判断是否包含元素
boolean contains = list.contains("Apple"); // 判断是否包含元素"Apple"
  1. 获取列表大小
int size = list.size(); // 获取列表中元素的个数
  1. 遍历列表
  • 使用增强型for循环:

    for (String fruit : list) {System.out.println(fruit);
    }
    
  • 使用迭代器:

    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) {String fruit = iterator.next();System.out.println(fruit);
    }
    

注意
集合一旦定义了泛型,就规定了集合存储元素的类型
所以说泛型是一种数据安全的做法

三、枚举

1、概念: 枚举(Enumeration)是一种特殊的数据类型,用于定义一组具名的常量。在Java中,枚举类型是通过enum关键字来定义的。

2、用法:

  1. 定义枚举类型
enum Season {SPRING, SUMMER, AUTUMN, WINTER
}
  1. 使用枚举常量
Season currentSeason = Season.SUMMER;
  1. 访问枚举常量
System.out.println(currentSeason); // 输出:SUMMER
  1. 比较枚举常量
if (currentSeason == Season.SUMMER) {System.out.println("It's summer!");
}
  1. 遍历枚举常量
for (Season season : Season.values()) {System.out.println(season);
}
  1. 自定义枚举属性和方法
1. enum DayOfWeek {MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"),THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六"),SUNDAY("星期日");private String chineseName;DayOfWeek(String chineseName) {this.chineseName = chineseName;}public String getChineseName() {return chineseName;}}DayOfWeek today = DayOfWeek.MONDAY;System.out.println(today.getChineseName()); // 输出:星期一

3、举例:枚举案例 之 策略枚举

需求:模拟千锋计算工资的功能
分析:
员工类别:行政、讲师
部门:Java(讲师)、Python(讲师)、HTML(讲师)、总经办(行政)、人力(行政)、财务(行政)
行政工资构成:基本工资 + 绩效
讲师工资构成:基本工资 + 绩效 + 课时费*课时

public class Test01 {public static void main(String[] args) {double salary1 = QianFeng.Java.getSalary(1800, 200, 88, 9);System.out.println(salary1);double salary2 = QianFeng.GeneralManagerOffice.getSalary(50000, 30000, 0, 0);System.out.println(salary2);}
}
import java.math.BigDecimal;//public final class QianFeng extends Enum
public enum QianFeng {Java(StaffType.teacher),Python(StaffType.teacher),HTML(StaffType.teacher),GeneralManagerOffice(StaffType.admin),HR(StaffType.admin),finance(StaffType.admin);private StaffType staffType;private QianFeng(StaffType staffType) {this.staffType = staffType;}public double getSalary(double basicSalary, double performance, double classFees, double classHours){return staffType.calculateSalary(basicSalary, performance, classFees, classHours);}//员工类型admin {//行政类别@Overridepublic double calculateSalary(double basicSalary, double performance, double classFees, double classHours) {BigDecimal big1 = new BigDecimal(String.valueOf(basicSalary));BigDecimal big2 = new BigDecimal(String.valueOf(performance));double salary = big1.add(big2).doubleValue();return salary;}},teacher {@Overridepublic double calculateSalary(double basicSalary, double performance, double classFees, double classHours) {BigDecimal big1 = new BigDecimal(String.valueOf(basicSalary));BigDecimal big2 = new BigDecimal(String.valueOf(performance));BigDecimal big3 = new BigDecimal(String.valueOf(classFees));BigDecimal big4 = new BigDecimal(String.valueOf(classHours));double salary = big3.multiply(big4).add(big1).add(big2).doubleValue();return salary;}};public abstract double calculateSalary(double basicSalary, double performance, double classFees, double classHours);}
}

在这里插入图片描述

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

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

相关文章

454.四数相加

给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 方法一&#xff1a; 双层for循环&#xff0c;将nums1、…

KY115 后缀字串排序

描述&#xff1a; 对于一个字符串&#xff0c;将其后缀子串进行排序&#xff0c;例如grain 其子串有&#xff1a; grain rain ain in n 然后对各子串按字典顺序排序&#xff0c;即&#xff1a; ain,grain,in,n,rain 输入描述&#xff1a; 每个案例为一行字符串。 输出描述&…

JS的Document属性和方法

在javascript中&#xff0c;document对象是一个非常重要的全局对象&#xff0c;它代表整个html文档。你可以通过document对象来访问和修改html文档的内容和结构。以下是一些常见的document属性和方法&#xff1a; 属性 1、document.title&#xff1a;获取或设置文档的标题&am…

HTML 特殊元素:展示PDF、展示JSON 数据

<pre> 标签 (preformatted text) <pre> 标签用来表示预格式化的文本内容 在页面数据展示时&#xff0c;后端返回了一段未经处理的JSON 数据&#xff0c;将这段数据在页面正常展示&#xff0c;让可读性更高。 {/"project": {/ "title": "…

TSP问题消除子环

个人感觉看这一个就够了&#xff01;&#xff01;&#xff01; 优化│TSP中两种不同消除子环路的方法及callback实现&#xff08;Python调用Gurobi求解&#xff09; 刘兴禄运筹学修炼日记&#xff1a;TSP中两种不同消除子环路的方法及callback实现&#xff08;Python调用Guro…

sentry-cli - error: Failed to load .sentryclirc file from project path

Xcode 15.2 warning sentry-cli - error: Failed to load .sentryclirc file from project path (/Users/zhuhongwei/Desktop/pandabill/.sentryclirc)推荐一下刚上线的 App 熊猫小账本&#xff0c;里面有用到这篇博客讲的内容 熊猫小账本 一个简洁的记账 App&#xff0c;用于…

1、鸿蒙学习-为应用/服务进行签名

针对应用/服务的签名&#xff0c;DevEco Studio为开发者提供了自动签名方案&#xff0c;帮助开发者高效进行调试。也可选择手动方式对应用/服务进行签名&#xff0c;如果使用了需要ACL的权限&#xff0c;需采用手动方式进行签名。 自动签名 说明 使用自动签名前&#xff0c;请…

AI智能报表助手

AI智能报表助手 目标&#xff1a;通过对话一句话智能引导出报表 NL2SQL 自然语言转换为sql 数据集 ATIS&GeoQuery数据集&#xff1a;ATIS数据集来源于机票订阅系统&#xff0c;与美国的地理相关&#xff0c;包含880条问题及对应的SQL语句&#xff0c;属于单一领域但上…

C++ 【深基3.习8】三角形分类

文章目录 一、题目描述【深基3.习8】三角形分类题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 样例 #3样例输入 #3样例输出 #3 样例 #4样例输入 #4样例输出 #4 提示 二、参考代码 一、题目描述 【深基3.习8】三角形分类 题目描述 给…

闭包机制的底层实现原理

说明:此次分享不涉及ES6的let,const,块级作用域,这些其实都是对本次分享内容的扩展。 闭包的重要性 JS的内功心法,闭包是JavaScript中非常重要的核心概念,关系着JS里很多核心的机制,理解了它,很多问题都会迎刃而解,不理解闭包用JS永远像隔着一层窗户纸。 前端发展日新…

【MySQL】学习和总结使用列子查询查询员工工资信息

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-5odctDvQ0AHJJc1C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

中国(京津冀)太阳能光伏推进大会暨展览会

中国(京津冀)太阳能光伏推进大会暨展览会是一个旨在促进太阳能光伏产业的发展的重要活动。该活动旨在加大对太阳能光伏的投资和支持&#xff0c;推动太阳能光伏技术的创新和应用&#xff0c;促进太阳能光伏产业的规模化发展。 此次大会暨展览会将为太阳能光伏行业相关企业提供一…

LeetCode刷题记录——day2

https://leetcode.cn/problems/product-of-array-except-self/description/?envTypestudy-plan-v2&envIdtop-interview-150 问题在于不使用除法并且空间复杂度为O(1)&#xff0c;当第一次从头开始遍历时由于不知道后续数组元素是什么&#xff0c;所以无法得到答案&#xf…

Python 枚举(Python Enumerations)

Python 枚举&#xff08;Enumerations&#xff09;是一种用于创建命名的常量集合的方法。它提供了一种更好地组织代码、增加可读性和可维护性的方式&#xff0c;特别是在需要表示一组相关常量时。 Python 的枚举是通过 enum 模块实现的&#xff0c;它在 Python 3.4 版本之后成…

【Linux】Linux基本开发工具(yum) (vi/vim)的使用

本文章内容&#xff1a; 学习yum工具&#xff0c;进行软件安装掌握vim编辑器使用 Linux 软件包管理器 yum 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成…

es 聚合操作(一)

前言 Elasticsearch除搜索以外&#xff0c;提供了针对ES 数据进行统计分析的功能。聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如&#xff1a; 衣服品牌的受欢迎程度这些衣服的平均价格、最高价格、最低价格这些衣服的每天、每月销量如何 使用…

产品推荐 | 基于Xilinx Zynq UltraScale+打造的仙女座 Andromeda FPGA核心板

1、产品概述 仙女座Andromeda XZU65片上系统&#xff08;SoC&#xff09;核心板通过结合高端Xilinx Zynq UltraScale™ MPSoC系列芯片和高速DDR4 ECC SDRAM、eMMC flash、双QSPI flash、双Gigabit Ethernet PHY、USB 3.0形成了一个完整的、功能强大的嵌入式处理系统。得益于大…

Rhino与Revit API之间的转换

你好&#xff0c;我是九哥~ 最近发现Rhino.Inside.Revit的API手册更新了&#xff0c;终于可以开心的写RIR代码了&#xff0c;小伙伴快去试试吧&#xff0c;地址如下&#xff1a; https://www.rhino3d.com/inside/revit/1.0/reference/rir-api 今天我们先来聊聊 Rhino 与 Rev…

ARM:汇编点灯

.text .global _start _start: 使能GPIOE和GPIOF的外设时钟 LDR R0,0x50000A28 指定寄存器地址 LDR R1,[R0] 将寄存器原来的数值读取出来&#xff0c;保存到R1中 ORR R1,R1,#(0x3<<4) 将第3/4位设置为1 STR R1,[R0] 将修改后的数值写回设置LED1亮 设置PE10为输出…