从头开始学java--集合(一)

Win11下Android模拟器报HAXM未安装?三步搞定虚拟化配置(附终端命令) 本文详细解析了Win11下Android模拟器HAXM报错的解决方案,从虚拟化配置到终端命令实战。通过检查BIOS设置、调整Windows功能及执行PowerShell命令,三步搞定虚拟化配置问题,有效提升模拟器性能。特别针对Win11与HAXM的兼容性问题提供了专业指导。 阅读详情

一.集合概述


什么是集合?
集合就是容器,存放东东的东东。存储数据用对象存,那存储对象的容器就是集合。
数组与集合的区别?
数组存储需要是固定长度的,集合长度不限。数组中对象必须是同一类型的,集合中可以是不同类型的。所以集合的类型更为广泛。

说白了,集合就是传说中的数据结构,只不过不用我们自己写了,java已经为我们提供好了一大堆集合类,我们只需要运用就可以啦,就不需要自己写那些数据结构啦!

常用的数据结构有线性表,链表,栈,树等,java中有ArrayList类等与之对应。

Collection分为两大类:

         List类:元素有序,可以重复,有索引。

         Set类:元素无序,不能重复,无索引。




上图是java中常用的集合分类。

二.ArrayList类的使用

先看一下ArrayList类的增加,删除,清空,判断个数,判断是否为空,判断是否含有某对象等功能的例子:
import java.util.*;

public class CollectionTest1 {
	public static void main(String[] args)
	{
		//创建一个集合容器,使用collection接口
		ArrayList al = new ArrayList();
		
		//增加元素,add方法的参数类型是object类,集合中添加的都是对象的引用
		al.add("content1");
		al.add("content2");
		al.add("content3");
		//判断是否含有某元素
		System.out.println(al.contains("content1"));
		//获取集合元素个数,.size()方法
		System.out.println(al.size());
		//直接打印集合
		System.out.println(al);
		//删除集合元素
		al.remove("content1");
		//清空集合元素
		al.clear();
		//判断是否为空
		System.out.println(al.isEmpty());
		//取两个集合中的交集,存储在前一个集合中
		System.out.println(al.retainAll(al));
	}
}
结果:


要点:
1.集合类在包java.util中,使用之前要导入这个包中的类。
2.使用集合时,创建一个相应的对象,通过对象集合进行操作。
3.集合中如果存的是对象,那么添加的都是对象的引用而不是对象本身。
4.add参数为Object类,可以接收所有的对象。

三.迭代器

因为各种数据结构实现不同,取出功能比较复杂,所以将取出元素这个操作进行了封装,被封装在容器类中,是一个内部类,以便方便访问类中的元素。取出操作。这些内部类取出操作都符合一些规则,所以都实现了一个接口,Iterator。如果我们自己设计了一个数据结构,实现这个接口也就实现了迭代器的功能。


import java.util.*;
 
public class CollectionTest2 {
	public static void main(String[] args)
	{
		ArrayList al = new ArrayList();
		
		al.add("content1");
		al.add("content2");
		al.add("content3");
		
		//获取迭代器的引用值,用it保存(迭代器是内部类,在创建外部类时已经创建了接口)
		Iterator it = al.iterator();
		//it.hasNext方法,判断是否有元素,如果有返回真,否则为假
		while(it.hasNext())
		{
			//it.next返回当前元素
			System.out.println(it.next());
		}
	}

}



要点:

1. 迭代器是一个内部类,实现一个接口。使用迭代器的时候,通过接口调用,用集合类的.iterator()方法返回迭代器在建立集合时建立的内部类对象实例。

2. 迭代器常用的方法.hasNext()判断是否还有元素。

3. 迭代器常用方法.Next(),返回迭代器中的下一个元素。



四.List集合


上面说过,List类中有索引,元素是有序的,可以重复。

所以List类中有一些特有的方法,即可以操作脚标的方法都是List的方法。

 

import java.util.*;

public class ListTest1 {
	public static void main(String[] args)
	{
		ArrayList al = new ArrayList();
		al.add("content1");
		al.add("content2");
		al.add("content3");
		
		//在指定位置添加元素
		al.add(1, "content0");
		System.out.println(al);
		
		//删除指定位置元素
		al.remove(1);
		System.out.println(al);
		
		//修改指定位置元素
		al.set(1, "content8");
		System.out.println(al);
		
		//通过脚标获取元素
		System.out.println(al.get(1));
		
		//通过脚标遍历
		for (int i = 0; i < al.size(); i++)
		{
			System.out.println(al.get(i));
		}
		
		//获取对象脚标
		System.out.println("index of content1 = " + al.indexOf("content1"));
		
	}
}<strong>
</strong>


要点:

List集合特有的方法一般都是跟脚标有关的。



五.List迭代器

当用迭代器操作时,我们有时也希望操作集合。但是我们在迭代的时候,用集合方式修改时会发生一些奇怪的异常:

import java.util.*;

public class ListTest2 {
	public static void main(String[] args)
	{
		ArrayList al = new ArrayList();
		al.add("content1");
		al.add("content2");
		al.add("content3");
		
		//如果我们用迭代器时,想通过Collection的方法修改List,会出现异常
		Iterator it = al.iterator();
		
		while(it.hasNext())
		{
			Object obj = it.next();
			if (obj.equals("content1"))
				al.add("content0");
			System.out.println(it.next());
		}
		
	}
}

结果:


这个异常是说对象被并发修改时引发的异常。就是说要么用集合方式,要么用迭代器方式修改。

 

用迭代器方式修改时,方法比较少,只有三个方法,hasnext(),next(),remove()。

所以在这里我们如果想要用其他的方法,如添加或修改时,就要用派生于迭代器的List迭代器进行操作。

import java.util.*;

public class ListTest2 {
	public static void main(String[] args)
	{
		ArrayList al = new ArrayList();
		al.add("content1");
		al.add("content2");
		al.add("content3");
		
		//如果我们用迭代器时,想通过Collection的方法修改List,会出现异常
		ListIterator it = al.listIterator();
		
		while(it.hasNext())
		{
			Object obj = it.next();
			if (obj.equals("content1"))
				//增加
				it.add("content0");
		}
		System.out.println(al);
		
		//List还可以反向遍历
		while (it.hasPrevious())
		{
			System.out.println(it.previous());
		}
	}
}
结果:


要点:

1.对于集合正在迭代的时候,要么用集合方式,要么用迭代器方式修改,不能同用,否则会引发异常。

2.使用List迭代器,可以比普通迭代器增加一些功能。


六.List子类特点

List分为ArrayList,LinkList,Vector三种

特点:

         ArrayList:底层数据结构用数组实现。查询速度很快,增删稍慢,线程不同步(默认长度是10,如果超过了10,那么就会新建一个大数组,将原来的东东拷贝到新的数组中)

         LinkList:底层数据结构用链表实现。增删速度很快,查询速度稍慢

         Vector:底层数据结构是数组结构,现在很少使用了。线程同步。




其他知识点:三种List类型集合使用。


【NLG】(六)文本生成评价指标—— ROUGE原理及代码示例 前奏: 【NLG】(一)文本生成评价指标——BLEU原理及代码示例 【NLG】(二)文本生成评价指标—— METEOR原理及代码示例 【NLG】(三)文本生成评价指标—— ENTROPY原理及代码示例 【NLG】(四)文本生成评价指标—— diversity原理及代码示例 【NLG】(五)文本生成评价指标—— kl_divergence原理及代码示例 1.ROUGE原理 2.优缺点 3.如何算ROUGE ... 阅读详情

相关推荐

保姆级教程:用ROS2 Humble + Gazebo Classic 从零搭建一个能键盘控制的差分AGV模型

本文提供了一份详细的ROS2 Humble与Gazebo Classic教程,指导用户从零开始搭建一个键盘控制的差分AGV模型。内容涵盖环境配置、Xacro文件设计、Gazebo仿真集成以及键盘控制实现,特别针对常见问题提供解决方案,帮助开发者快速掌握ROS2机器人仿真技术。

weixin_30387423的博客 169

一篇文章来你学完Java中的集合(超详细)

存储的是引用:Java集合存储的是对象的引用,而不是对象本身。操作的是引用:对集合的操作(如添加、获取、更新、删除)实际上是在操作这些引用。影响垃圾回收:集合中存储的引用会影响对象的垃圾回收过程,因为只要引用存在,对象就不会被回收。ListJava中的Set集合主要用于存储不重复的元素。Set接口继承自Collection接口,但它不保证维护任何特定的顺序(除非该集合是某个特定类型的,比如,它按照元素被插入的顺序来遍历元素)。Set接口的实现类主要有HashSetTreeSet等。

2301_79842503的博客 4463

全志T113-S3 Linux系统移植实战:从硬件配置到内核启动全解析

本文详细解析了将Linux系统移植到全志T113-S3嵌入式芯片的完整实战流程。内容涵盖从开发环境搭建、Longan SDK源码获取,到关键的U-Boot配置、DDR初始化、Linux内核编译与设备树定制,以及根文件系统构建与启动脚本分析。文章结合硬件配置与启动日志解读,提供了从硬件配置到内核启动的全方位指导,帮助开发者高效完成系统移植。

ik67890123的博客 517

教妹学 Java:大有可为的集合

Java 的集合

沉默王二 7556

【工具使用】Keil常用的调试操作整理介绍

2、当选择了非0级优化时,调试可能会变得困难,具体表现在断点调试。该按钮是在进入了函数单步调试的时候,有时候你可能不必再执行该函数的剩余部分了,通过该按钮就直接一步执行完函数余下的部分,并跳出函数,回到函数被调用的置。:如果是在C语言窗口中,则是按单条语句执行,与单步调试不同的是,遇到函数不会进入函数内部,而是直接全速运行函数,并跳到下一条语句。但我的Keil软件中无法显示这个视图,并且通过修改系统试图,调试时,点击打开系统视图发生了闪退的现象,目前能想到的原因是:重新安装Keil,安装最新版本。

MEYOU_Cc 不吃香菜! 1万+

论文阅读—Square Attack: a query-efficient black-box adversarial attack via random search

论文阅读—Square Attack: a query-efficient black-box adversarial attack via random search 发表位置 ECCV 2020 摘要 作者提出了一种基于得分的黑盒Square attack,该模型不依赖于模型的局部梯度信息,因此可以绕过梯度隐藏防御攻击。Square Attack是一种随机搜索方法,它在随机位置选择局部的方形更新,使得每次迭代时扰动近似位于可行集的边界。 背景 当涉及到对安全至关重要的机器学习应用时,对抗性的例子尤其值得

yayayamaomaoya的博客 2495

JAVA 集合 (一)

文章目录1.集合1.1 四种体系1.2 Set集合1.2.1 HashSet1.3 Hashset 集合存储对象的原理:1.4 LinkedHashSet1.5 Tree 树 1.集合 Java集合类是一种特别有用的工具类,可用于存储数量不等的对象,并可以实现常用 的数据结构,如栈、队列等。除此之外,Java集合还可用于保存具有映射关系的关联 数组。Java集合大致可分为List、Set、...

wzq18845280610的博客 3149

gsplat在windows本地部署

3DGS的cuda提效和优化内存的版本gsplat,使得在有一定GPU计算能力的电脑上也能够尝尝3DGS的效果。我在2025年的开年之初尝试配置过gsplat,由于过程中遇到很多问题,最终还是有一些windows上字符编码的问题,没有跑通,最近看gsplat的github更新了3DGUT,优化了反射和二次折射,以及适用于非线性相机模型,如鱼眼相机等。在data目录下下载好了360_v2的数据,进入之后images文件夹是原始分辨率的图像,images_2是下采样系数为2的数据,以此类推。

yuleaf_csdn的博客 2371

Java集合(一)集合框架概述

Collection、List、Queue、Set、Map;集合使用场景;集合区别、Comparable和Comparator

HK的博客 4645

Proteus-51单片机-LCD1602显示DS1302时钟

本文详细介绍了如何使用Proteus仿真51单片机配合LCD1602显示DS1302时钟的步骤,包括DS1302时钟芯片的主要特性、引脚定义、外围电路以及LCD1602的原理和技术参数。此外,还讲解了LCD1602的指令集和显示字符的方法,并给出了初始化及显示操作的步骤。

让你爱上电路设计 6980

第14.5章 高翔博士最新开源框架Lightning-LM源码解读(五):揭秘位姿图优化核心模块,从数学原理到代码实现

本文介绍了Lightning-LM框架中的位姿图优化(PGO)模块实现。该模块通过融合多源定位信息(激光定位、激光里程计、DR等),构建并优化位姿图来获得更精确的位姿估计。 主要内容包括: 模块概况与数据流程:初始化配置→添加PGO帧→分配位姿→优化求解→更新位姿→滑动窗口 16个核心函数详解:从构造函数到边缘化处理,涵盖完整的PGO工作流程 关键技术点:噪声参数设置、优化问题构建、约束添加、异常值处理等 关键数据结构:帧队列管理、顶点和边构建、优化统计信息收集 该PGO模块采用增量式优化方式,支持多种约束

行知SLAM 1216

【Java集合一】集合概述

介绍了Java集合框架,包括其概述、主要数据结构(如List、Set、Queue、Map)以及相关实现类(如ArrayList、LinkedList、HashSet、HashMap等)。内容涵盖了集合框架的原理、特点、使用方法以及常见操作。

叉烧钵钵鸡的博客 1214

通信算法之281:大疆DJI无人机ID-DJI DroneID开源工程-相关问题-协议信息问题

ZC序列的参数未知。但是,使用第一个或第二个零相关序列对每个OFDM符号进行相位调整,对于直接相邻于使用过的零相关序列的时间上的OFDM符号工作得很好,但对其它符号效果不佳。由于符号的顺序没有改变,而9 OFDM符号情况下的第一个OFDM符号没有用处,因此本存储库中的脚本对待所有突发都是有9个OFDM符号的,并且不对第一个OFDM符号做任何处理。棘手的地方在于需要生成比数据载波数量(始终为600)多1个的零相关序列,零化中间元素,将生成的样本映射到FFT的中心(采样率决定bin的数量),然后计算IFFT。

leegang12的专栏 1623

Java研学-集合框架

相同点:都是用来存储多个数据类型的容器不同点:存储的灵活性① 长度: 数组一旦创建长度固定;集合可以灵活存储② 数据类型: 数据可存放指定的一种数据类型,既可以是基本数据类型也可以是引用数据类型;集合只能存放任意的引用数据类型(如果赋值基本数据类型,底层以基本数据类型的包装类存储,自动装箱的形式完成)

zhlyxx的博客 1963

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

我在Vscode学Java集合类

Collection是单例集合的顶层接口,可为所有的单列集合提供继承使用。Collection是一个接口,不能直接创建对象。只能创建其实现类的对象.例如ArrayList哈希表:是一种用于高效存储和检索数据的结构。它通过将数据映射到固定大小的数组索引来实现高效的增、删、查操作。底层结构HashSet使用哈希表存储数据,JDK 8 前后分别使用数组+链表、数组+链表+红黑树的组合。哈希值:由hashCode方法计算,决定元素在哈希表中的位置。碰撞处理:通过链表或红黑树处理哈希碰撞。自定义对象。

m0_74154295的博客 1248

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

从零开始学JAVA——集合(一)

集合(一)一、集合框架的概述二、集合框架三、 Colletion接口声明的方法的测试四、集合元素遍历操作,使用迭代器Iterator接口JDK5.0新增了foreach循环,用于遍历集合和数组 一、集合框架的概述 1.集合、数组都是对多个数据进行存储操作的结构,简称JAVA容器。 说明:此时的存储,主要指的时内存层面的存储,不涉及到持久化的存储(.txt.jpg.avi) 2.1数组在存储多个数据方面的特点: 1)一旦初始化以后,其长度就确定了。 2)数组一旦定义好,其元素的类型也就确定了。我们也只能操作指

man的博客 236

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java中集合怎么定义_Java集合系列(一):集合的定义及分类

1. 集合的定义什么是集合呢?定义:集合是一个存放对象的引用的容器。在Java中,集合位于java.util包下。2. 集合和数组的区别(面试常问)提到容器,就会想起数组,那么集合和数组的区别是什么呢?(这里是重点,面试可能问的比较多)数组和集合都是Java中的容器数组的长度是固定的,集合的长度是可变的数组只能存储相同数据类型的数据,这里的数据类型可以是基本数据类型,也可以是引用类型集合可以存储不...

weixin_34952710的博客 4634

从头开始学Shark II

从头开始学Shark II –启动引擎和登陆(宏云翻译,Cygnet开源工作流组,2005-4-15)原文地址:http://shark.objectweb.org/doc/sfs/sharkfromscratch2.html在这篇文档中,我简单描述实例代码的创建。和以前一样,我不打算涉及和本文不直接相关的所有主题。首先,你必须了解如何去编写、编译和执行Java程序。另外,你需要有一个Shark的

宏云专栏 2094

【从头开始学JAVA】Collection集合 Map

List: ArrayList底层是数组结构,查询快,增删慢适合查询较多的场景 LinkedList底层是链表结构,查询慢,增删快,适合增删操作较多的场景 注意:LinkedList查询慢是指数据量大时,查询中间要慢首位操作还是比较快的 Set: HashSet : 底层是哈希表,包装了HashMap,相当于向HashSet中存入数据时,会把数据作为K,存入内部的HashMap中。当然K仍然不许重复。 TreeSet : 底层是TreeMap,也是红黑树的形式,便于查找数据 Map:...

Memory_314的博客 282

java从头开始--集合1

集合 泛型 package com.ff.javaCollection.day1; import java.util.ArrayList; /* 泛型:类型参数化,参数化类型,将类型作为参数传入 <一般为任意的单个大写字母,可以有多个> 泛型传入的类型只可以的类类型 如果没有写,默认的是Object */ public class TypeDemo<T,E> { T name; E color; public T test(E e) {

crraxx的博客 264

我靠!Java集合原来要这么学

public interface Collection extends Iterable collection实现子类可以存放多个元素,并且每个元素都可以是Object 有些Collection的实现类,有些可以存放重复的元素,有些不可以 有些Collection的是实现类,有些是有序的(List),有些不是有序的(Set) Collection接口没有直接的实现子类,是通过它的子接口Set和List来实现的

itzzan的博客 1185

JAVA8 lambda 实现快速从一集合收集到另一集合

转载:https://www.jianshu.com/p/8244992304f9 1、从一个已知集合,怎么筛选获取另一类型的集合 从List&lt;Student&gt; students怎么把名字提取出来,得到一个List&lt;String&gt; names的集合。我不想写for,费劲,直接上代码! public class Student { private String...

Flyer的后花园 7240

Java集合系列(一)集合的定义及分类

什么是集合呢?定义:集合是一个存放对象的引用的容器。在Java中,集合位于java.util包下。

weixin_62421895的博客 644

从头开始学Java源码

基础篇 1.String源码解析 2.Integer源码解析 集合篇 3.ArrayList源码解析 4.LinkedList源码解析 5.List源码面试题集锦 6.HashMap源码解析 7.TreeMap源码解析 8.LinkedHashMap源码解析 9.Map源码面试题集锦 10.HashSet源码解析 11.TreeSet源码解析 12.Set源码面试题集锦 13.CopyOnWriteArrayList源码解析 14.ConcurrentHashMap源码解析 15.CopyOnWriteAr

Steven的博客 180

Java集合(一)什么是集合

什么是集合    1、集合类存放于java.util包中。    2、集合类型主要有3种:set(集)、list(列表)和map(映射)。    3、集合存放的都是对象的引用,而非对象本身。所以我们称集合中的对象就是集合中对象的引用。    简单来讲:集合就是一个放数据的容器,准确的说是放数据对象引用的容器。集合有哪些以及它们之间的关系上面这个图看上去有点杂,不过没关系,我们一步一步来剖析它。这张...

B_evan的博客 2万+

Java集合系列(一):集合的定义及分类

什么是集合呢?定义:集合是一个存放对象的引用的容器。在Java中,集合位于java.util包下。

cxytony的博客 804
上一篇: 从头开始学java--包
下一篇: 从头开始学java--GUI(一)
puppet_master
puppet_master 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄12年 2695粉丝 161原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值