---------------------- android培训
、java培训
、期待与您交流! ----------------------
集合框架
集合类
数据多了存在对象内
,
对象多了存在集合内
.
集合只用于存储对象
.
集合长度可变
,
集合可以存储不同类型的对象
.
参阅顶层创建
集合中存储的都是对象的引用或者地址
.
Iterator it=al.iterator();
迭代
什么是迭代器
?
其实就是集合的取出元素的方式
.
Collection
List:
元素是有序的
,
元素可以重复
.
因为该集合体系有索引
.
ArrayList
底层的数据结构使用的是数组结构
特点
:
查询速度快
,
增删稍慢
.
线程不同步
LinkdList
底层使用的是链表数据结构
.
特点
:
增删速度度
,
查询慢
.
Vector
底层是数组数据结构
.
线程同步
.
枚举就是
Vector
特有的取出方式
.
List:
元素是有序的
,
元素可以重复
.
因为该集合体系有索引
.
Set:
元素无序的
,
不可以重复
.
该集合中没有索引
.
List:
特有方法
.
凡是可以操作角标的方法都是该体系特有的方法
.
List
集合特有的迭代器
.ListIterator
是
Iterator
的子接口
.
在迭代时
,
不可以通过集合对象的方法操作集合中的元素
.
因为会发生并发修改异常
.
所以
.
在迭代时
,
只能用迭代器的方法操作元素
.
可是
Iterator
的方法有限的
,
只能
,
判断取出
,
删除的操作
.
如果想要其他的操作如添加
,
修改等
,
就要使用其子接口
ListIterator
该接口只能通过
List
集合的
ListIterator
方法获取
.
List
常见的三种
:
ArrayList:
底层的数据结构使用的是数组结构
,
特点
:
查询快
,
但是增删稍慢
.
线程不同步
,
相对
Vector
效率高
.
LinkedList:
底层的是链表结构
.
特点
:
增删速度快
,
查询稍慢
.
Vector:
底层是数组数据结构
,
线程同步
.
ArrayList:
可变长度数组
.
List
的选择
|
底层实现
|
特性
|
适用场合
|
Vector/Stack
|
|
|
版本较低,避免使用
|
ArrayList
|
数组
|
访问快速
|
默认选择;
需要执行大量的随机访问
|
LinkedList
|
双向链表
|
插入和删除代价低廉
|
要经常在表中插入或删除元素
|
最佳做法:将
ArrayList
做为默认首选,只有当需要额外的功能,或者当程序的性能因为经常从表中间进行插入和删除而变差的时候,才去选择
LinkedList
。如果元素数量固定,既可以使用
List
,也可以使用数组。
LinkedList:
特有方法
addFirst();
addLast();
getFirst();
getLast();
获取元素
,
不删除元素
.
removeFirst();
removeLast();
获取元素
.
删除该元素
.
如果集合中没有元素会出现
NoSuchElementException
在
JDK1.6
出现了替代方法
.
offerFirst();
offerLast();
peekFirst();
PeekLast();
获取元素
,
元素不被删除
.
如果没有元素返回
null.
pollFirst();
pollLast();
获取元素
,
元素被删除
.
如果没有元素返回
null.
Set:
元素是无序的
(
存入和取出的顺序不一定一致
),
元素不可以重复
.
Set
集合功能和
Collection
是一致的
.
set
常见的子类
,:
Set
的特性:
不保存重复元素,元素必须实现
equals()
方法;
不保证维护元素的次序。
|
底层实现
|
特性
|
适用场合
|
HashSet
|
散列
|
查询速度最快;
元素必须定义
hashCode()
方法
|
默认选择
|
TreeSet
|
二叉树
|
可以从
Set
中提取有序的序列;
元素必须实现
Comparable
接口
|
|
Hashset:
底层数据结构是哈希表
.
TreeSet:
可以对
Set
集合中的元素进行排序
.
底层数据结构是二叉树
,
保证元素唯一性的依据是
compareTo
方法
return0.
HashSet
是如何保证元素唯一性的呢
?
是通过元素的两个方法
,hashcode
和
equals
来完成
.
如果元素的
HashCode
值相同
,
才会判断
equals
是否为
true.
Treeset:
可以对
Set
集合中的元素进行排序
,
按字母先后
排序时
,
当主要条件相同时
,
一定要判断次要条件
.
按年龄排序
.TreeSet
Student implements Comparable
TreeSet
排序的第一种方式
.
让元素自身具备比较性
.
元素需要实现
Comparable
接口
,
覆盖
compareTo
方法
.
第二种排序方式
.
当元素自身不具备比较性时
,
或者具备的比较性不是所需要的
.
这时就需要让集合自身具备比较性
.
在集合初始化时
.
就有了比较方式
当两种排序都存在时
.
以比较器在为主
.
TreeSet
(
Comparator
<? super
E
> comparator)
构造一个新的空
TreeSet
,它根据指定比较器进行排序。
泛型
为了解决安全问题
,JDK1.5
后出现的新特性
.
1.
将运行时期出现问题
ClassCastException
转移到编译时期
.
方便程序员解决问题
.
安全
.
2.
避免了强制转换的麻烦
.
泛型格式
:
通过
< >
来定义要操作的引用数据类型
.
在使用
java
提供的对象时
,
什么时候写泛型呢
?
通常在集合框架中很常见
.
只要见到
< >
就要定义泛型
.
其实
< >
就是用来接收类型的
.
当使用集合时将集合中要存储的数据类型作为参数传递到
< >
中即可
.
/*
泛型类
class Utils
<QQ>
{
private QQ q;
public void setObject(QQ q)
{
this.q=q;
}
public QQ getObject()
{
return q;
}
}
什么时候定义泛型类
当类中要操作的引用数据类型不确定的时候
,
早期定义
Object
来完成扩展
.
现在定义泛型来扩展
.
泛型类定义的泛型
,
在整个类中有效
,
被方法使用
.
那么泛型类的对象明确要操作的具体类型后
,
所有要操作的类型就已经固定了
为了让不同方法可以操作不同类型
,
而且类型还不确定
.
那么可以将泛型定义在方法上
.
class Demo
{
public
<T> void show(T t)
{
System.out.println("show:"+t);
}
public
<Q> void print(Q q)
{
System.out.println("print:"+q);
}
}
*Demo d=new Demo();
*d.show("haha
");
*d.show(new Integer(4));
*d.print("heihei
");
还可以泛型类中套其他泛型方法
.
方法的类型与泛型类的类型不用一致
.
特殊之处
:
静态方法不可以访问类上定义的泛型
.
如果静态方法操
泛型定义在接口上
.
Interface Inter
<T>
{
void
show(T t);
}
class InterImpl implements Inter<String>
{
public
void show(String t)
{
System.out.ptrintln("show:"+t);
}
}
*InterImpl i=new InterImpl();
*i.show("haah
");
*/
*
另一种
*class InterImpl<T> implements Inter
<T>
*
public
void show (T t)
*
{
*
SOP("show:"+t);
*
}
泛型限定
上限
下限两种
?
叫通配符也可以理解为占位符
.
泛型的限定
? extends E:
可以接收
E
类型或者
E
类型的子类型
.\
上限
(
上面限定不能变下面可以扩展
)
? super E:
可以接收
E
类型或者
E
的父类型
.
下限
.
map
集合
.
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
map
集合的存是用
put
方法来实现的
.
V
|
put
(K key,
V value)
将指定的值与此映射中的指定键关联
|
重要方法
entySet()
和
keySet()
|
底层实现
|
特性
|
HashMap
|
散列表
哈希表数据结构
|
插入和查询的开销是固定的;
可以通过构造方法设置容量和负载因子,调整性能
,
允许
null
值和
null
键
,
不同步
|
Hashtable
|
哈希表
|
不可以存入
null
键
null
值
.
是同步的集合
|
TreeMap
|
二叉树
|
总是保证有序;不同步
,
可以给
map
集合中的键进行排序
.
可以通过
subMap()
方法返回一个子树
|
Map
集合和
Set
很像
,
其实
Set
底层就是使用的
Map
集合
.
map
集合的两种取出方式
:
1.
keyset:
将
map
中所有的键存入到
set
集合
,
用
set
集合迭代方式取出所有的键
,
在获取每一个键对应的值
.
2.
entrySet
()
返回此映射中包含的映射关系的
Set
视图
返回的是
Set<Map.Entry<K,V>>
集合
.
---------------------- android培训
、java培训
、期待与您交流! ----------------------
分享到:
相关推荐
238个Java源代码文件是本项目的核心,包含了大量示例程序,覆盖了教程中所涉及的各类Java基础知识点和核心概念,如数据类型、控制结构、数组、类和对象、继承、接口、异常处理、集合框架、泛型、输入输出、多线程、...
其次,"黑马程序员入学Java精华总结"这本书籍或文档可能是对Java基础知识的系统性梳理,它可能涵盖了从基础语法到项目实践的所有关键知识点,旨在帮助初学者快速建立起对Java的全面认知。这可能包括: 1. **基础...
内容概要:本文详细介绍了三电平SVPWM模型在Matlab中的搭建与研究,重点探讨了三电平逆变器的工作原理、性能特点以及参数优化方法。文中不仅解释了三电平逆变器相较于传统两电平逆变器的优势,如更高的电压分辨率和更低的谐波失真,还深入讨论了SVPWM控制策略的具体实现步骤,包括扇区划分、中性点电压平衡、死区时间和波形生成等关键环节。此外,文章还强调了仿真与实际应用之间的差异,指出仿真只是调试的起点而非终点。 适合人群:从事电力电子、自动化控制领域的研究人员和技术人员,尤其是对逆变器建模和仿真相关工作的从业者。 使用场景及目标:适用于需要深入了解三电平逆变器特性和优化控制策略的研究项目,旨在帮助读者掌握基于Matlab的三电平SVPWM模型构建技巧,从而更好地进行逆变器性能评估和改进。 其他说明:文章提供了大量实用的Matlab代码片段,便于读者理解和实践。同时提醒读者关注仿真与现实应用间的细微差别,确保理论成果能够顺利转化为实际效益。
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
水利规范-7p倒虹吸工程及渠道防渗衬砌设计图集.zip
JAVAWeb外文文献毕业设计样本.doc
scratch少儿编程逻辑思维游戏源码-我的世界冒险通过 V5.zip
scratch少儿编程逻辑思维游戏源码-星之卡比 动画.zip
# 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
scratch少儿编程逻辑思维游戏源码-我的世界构建像素立方体.zip
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
scratch少儿编程逻辑思维游戏源码-仙人掌内战.zip
scratch少儿编程逻辑思维游戏源码-贪食蛇.zip
# 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
# 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
复制链接到浏览器打开即可,https://link3.cc/diwangluo
内容概要:本文详细介绍了使用Matlab编写的水果识别程序。首先简述了人工智能和机器学习在水果识别领域的应用背景,强调了Matlab作为强大编程环境的优势。接着,文章逐步讲解了水果识别程序的具体实现流程,涵盖数据预处理、特征提取、模型训练以及最终的识别算法实现。每个环节都采用了先进的技术和方法,如图像去噪、大小调整、深度学习算法(特别是卷积神经网络CNN),并通过训练神经网络模型来提升识别精度。此外,还讨论了相关技术手段和技术挑战,展示了Matlab在图像处理和计算机视觉方面的强大能力。 适合人群:对图像处理、机器学习感兴趣的科研人员、学生及工程师。 使用场景及目标:适用于希望深入了解Matlab环境下水果识别程序的设计与实现的研究者;旨在帮助使用者掌握从数据准备到模型部署的一系列技能,为实际项目提供理论支持和技术指导。 其他说明:文中不仅提供了详细的程序实现步骤,还对未来发展方向进行了展望,鼓励更多人参与到水果识别及相关领域的研究中。
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
内容概要:本文介绍了西门子S7-300 PLC在某汽车生产线的应用,涵盖了从硬件配置到软件编程的各个方面。硬件部分包括300 CPU、TP700触摸屏、远程ET200站点和Profibus DP网络系统。软件部分涉及PLC程序、HMI界面、IO表和图纸。重点在于模块化编程方法,如模拟量采集、气缸控制、线体阻挡、延时控制和自动换班等功能块的集成。同时,文中提到压力值和位移传感器的数据采集,并通过触摸屏以曲线形式展示。此外,还讨论了梯形图、STL和SCL三种编程语言的混合使用,确保程序结构清晰且易于维护。最后强调了Profibus DP网络在各站点间数据传输中的重要作用。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和Profibus DP网络有研究兴趣的人群。 使用场景及目标:适用于汽车制造业及其他类似行业,旨在提高生产线的自动化程度和生产效率,确保产品质量。通过对S7-300 PLC的学习和应用,掌握模块化编程技巧和网络通信协议,优化生产线管理。 阅读建议:读者可以通过本文深入了解S7-300 PLC的具体应用场景和技术细节,特别是模块化编程的优势和混合编程的实际操作。同时,关注Profibus DP网络的作用,理解其在网络架构中的重要地位。
scratch少儿编程逻辑思维游戏源码-数学横版过关游戏.zip