集合框架

news/2025/1/18 23:01:02/文章来源:https://www.cnblogs.com/arioya/p/18679004

学习视频

集合的概述

image

image

public class Demo01 {public static void main(String[] args) {//简单确认一下Collection集合特点ArrayList<String> list = new ArrayList<>();list.add("java1");list.add("java2");list.add("java3");list.add("java1");System.out.println(list);System.out.println(list.get(1));HashSet<String> set = new HashSet<>();set.add("java1");set.add("java2");set.add("java3");set.add("java2");set.add("java3");System.out.println(set);}
}

image

Collection集合

为什么先学Collection集合呢?

Collection是单列集合的祖宗,它规定的方法(功能)是全部单列集合都会继承的。

常见方法

image

public class Demo02 {public static void main(String[] args) {Collection<String> c = new ArrayList<>(); //多态写法//1.public boolean add(E e):添加元素,添加成功返回truec.add("java1");c.add("java1");c.add("java2");c.add("java3");System.out.println(c.add("java2"));System.out.println(c);//2. public int size():获取集合的大小System.out.println(c.size());//3. public boolean contains(Object obj);判断集合中是否包含某个元素:System.out.println(c.contains("java1"));System.out.println(c.contains("Java1"));//4. public boolean remove(E e);删除某个元素:如果多个重复元素默认删除前面的第一个System.out.println(c.remove("java1"));System.out.println(c);//5. public Object[] toArray();把集合转换成数组//用Object[]接可以尽可能接住多种不同类型的元素Object[] arr = c.toArray();System.out.println(Arrays.toString(arr));//也可以指定类型,但是要确保与集合中元素数据类型一致String[] arr2 = c.toArray(new String[c.size()]);System.out.println(Arrays.toString(arr2));//6. public void clear();清空集合的元素c.clear();System.out.println(c);//7. public boolean isEmpty();判断集合是否为空,是空返回true,反转System.out.println(c.isEmpty());//把一个集合的全部数据倒入到另一个集合中去Collection<String> c1 = new ArrayList<>();c1.add("aaa1");c1.add("aaa2");Collection<String> c2 = new ArrayList<>();c2.add("bbb1");c2.add("bbb2");c1.addAll(c2);System.out.println(c1);//只是拷贝了一份,c2中的数据并没有消失System.out.println(c2);}
}

遍历方式

迭代器

image

public class Demo03 {public static void main(String[] args) {Collection<String> c = new ArrayList<>();c.add("aaa");c.add("bbb");c.add("ccc");c.add("ddd");System.out.println(c);//使用迭代器遍历集合//1.从集合对象中获取迭代器对象Iterator<String> it = c.iterator();System.out.println(it.next());System.out.println(it.next());System.out.println(it.next());System.out.println(it.next());
//        System.out.println(it.next());//出现异常//2.使用循环结合迭代器遍历集合Iterator<String> it1 = c.iterator();while (it1.hasNext()) {String ele = it1.next();System.out.println(ele);}}
}
/*
输出结果
[aaa, bbb, ccc, ddd]
aaa
bbb
ccc
ddd
aaa
bbb
ccc
ddd*/
增强for循环遍历
public class Demo04 {public static void main(String[] args) {Collection<String> c = new ArrayList<>();c.add("aaa");c.add("bbb");c.add("ccc");c.add("ddd");System.out.println(c);//使用增强for遍历结合或者数组for (String ele : c) {System.out.println(ele);}}
}
/*输出结果
[aaa, bbb, ccc, ddd]
aaa
bbb
ccc
ddd*/
Lambda表达式

image

public class Demo05 {public static void main(String[] args) {Collection<String> c = new ArrayList<>();c.add("aaa");c.add("bbb");c.add("ccc");c.add("ddd");System.out.println(c);//default void forEach(Consumer<? super T> action):结合Lambda表达式遍历集合//Consumer是个接口,可以用匿名类实现
//        c.forEach(new Consumer<String>() {
//            @Override
//            public void accept(String s) {
//                System.out.println(s);
//            }
//        });
//
//        c.forEach((String s) -> {
//            System.out.println(s);
//        });
//
//        c.forEach(s -> System.out.println(s));c.forEach(System.out::println);}
}
/*
[aaa, bbb, ccc, ddd]
aaa
bbb
ccc
ddd*/

集合存储对象的原理

注意:集合存储对象,存的不是对象本身,而是存的对象地址

image

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

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

相关文章

uniapp获取元素高度不准确问题解决

uniapp通过boundingClientRect获取的元素高度和实际高度差了不少,下面是复现和解决过程: 我的代码: 得到的结果: 高度只有105 用工具量一下: 实际有240px,遂gpt问下: 注意到了缩放比这个之前没想到的点,往下面看gpt更多的回复内容: 先获取系统缩放比,再乘以拿到的高度…

嵌入式Linux驱动开发学习--韦东山老师嵌入式Linux学习

最无益,只怕一日曝十日寒,贵在有恒。 目录2025-01-181、基础内容2、通用GPIO操作3、硬件操作4、驱动涉及的思想_面向对象_分层_分离1)面向对象2)分层3)分离5、驱动进化之路_总线设备驱动模型6、驱动进化之路_设备树的语法7、驱动进化之路_内核对设备树的处理与使用2025-01…

zabbix监控网络设备流量

项目环境一台liunx服务器,这里使用的为ubuntu22.04(192.168.86.140) 一台华为交换机,本次监控的就是该交换机的端口流量(192.168.86.20) 一台pc主机,使用该主机模拟流量变化ENSP拓扑图:安装zabbix 这里使用shell脚本进行安装,仅为ubuntu22.04的安装方式,别的版本可以参看…

关于动态规划

主要问题大概是动规基础(斐波那契),背包,打家劫舍,股票,子序列。 解决也主要是先分类,建立dp数组,明确dp数组的含义,dp数组的初始化,遍历顺序。 动规基础斐波那契数列,爬楼梯,建立dp数组的时候,递推公式的推导就要参考建立dp数组并且明确dp数组的含义 比如下面的最…

强力工具助你一臂之力:XXECheck–全面提升XML安全,防护XXE漏洞!

泷羽Sec-trackXXECheck XXECheck 是一种用于检测和防止 XML 外部实体 (XXE) 注入攻击的安全工具或库,一款XXE漏洞检测工具,支持 DoS 检测(DoS 检测默认开启)和 DNSLOG 两种检测方式,能对普通 xml 请求和 xlsx 文件上传进行 XXE 漏洞检测。 源地址:https://github.com/Wei…

知乐

儒家理想境界追求心灵的安顿过程 孔颜之乐 曾点之乐 潘立勇教授在[宋明理学休闲审美哲学的内在张力]中的一段描述:[1]宁新昌.孔颜之乐与曾点气象——兼论儒家的自由境界[C]//中华炎黄文化研究会,广东炎黄文化研究会,暨南大学.“21世纪中华文化世界论坛”第五次国际学术研讨…

[ABC283E] Don‘t Isolate Elements

题目:思路: 很明显总的情况是2^h*w种,然后不难发现改变一行只会影响到相邻两行,也就是说前面的决策不会影响到后面的决策,只有当前面的决策全部合理才能走后一步。 所以取dp:dp[i][j][k]为前i行,j(当前行是1/0否改变),k(当前行的前一行是1/0否改变)。 所以有递推式:dp[i][j]…

在 nuget 私服 BaGet 中应用https 以及 gitea action runner 自动打包

最近赋闲,想起之前工作中代码管理的一点经历,就是在打包项目的时候,类库的版本号几乎没变过,一个项目运行多少年了,版本号还是1.0.0。😂 即使用到了 nuget 私服,基本上也是手动打包的,CI 工具基本都是用到 api 项目。于是想结合 gitea 的 CI 工具 act runner 试用一下…

记录一下双多控开关接法

实际上双控就是单刀双掷开关,多控就是双刀双掷开关。多控里L1A+L1B是输入的俩个接上级出来的俩根线,LA和LB是反着的接上总有一路能通。输入俩通道输出俩通道所以可以无限串联。实际上双控就是单刀双掷开关,多控就是双刀双掷开关。 多控里L1A+L1B是输入的俩个接上级出来的俩根…

Day 7

1月17日,继续看了一些SpringBoot视频, SpringBoot的实现步骤SpringBoot项目的起步依赖 <!-- springboot工程需要继承的父工程 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifac…

如果通过 vxe-table 实现 Excel,可以和 Excel、WPS 复制粘贴

如果通过 vxe-table 实现 Excel,可以和 Excel、WPS 复制粘贴 官网:https://vxetable.cn<template><div><vxe-gridref="gridRef"v-bind="gridOptions"@cell-area-selection-end="cellAreaSelectionEndEvent"@cell-area-extensio…

树(基础)

树 1 定义 1.1 树是什么 树是一种数据结构,因为形似倒着的树而得名. 1.2 树的定义 递归定义 1.2.1 有根树的定义 形象化的,如图1,有根树存在根节点这一定义,从根节点可以分出任意个分支,这任意个分支又可以继续细分,分出的节点称为“子节点”。抽象化的,树也是\(N\)…