黑马程序员——集合类

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

集合类的框架如下图:


其中区别:

List:元素是有序的,有索引的,元素可以重复;

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


集合中存放的对象,其实只是存放对象的地址而已。


迭代器(关键代码如下):

ArrayList al=new ArrayList();
Iterator it=al.iterator();

iterator()被定义在了集合内部,这样可以直接访问集合内的元素,所以这个方法归为一类,被定义在了集合类内部,是其内部类,每个容器的数据结构不同,所以iterator()实现的方式不一样,但都有共性:判断hasNext()取出next(),那么可以将共性抽取,形成接口,以后定义其他容器的时候,也可以在其内部也定义一个类来实现Iterator接口(具体实现方法自己定义),这样无论什么容器,都可以用同一个规则来实现迭代。
迭代的伪代码比较:

Iterator it=al.iterator();
while(it.hasNext){
sop(it.next);
}
比较:for(Iterator it=al.iterator();it.hasNext();){
sop(it.next());
}
其中第二种用for循环比较好,因为迭代器被定义成了局部变量,在for循环结束后就不存在了,销毁了,不占用内存。

List特有的迭代器ListIterator,这个迭代器是Iterator接口的子接口。

Iterator:判断,取出,删除
ListIterator:判断,取出,删除,添加,修改,反向迭代
while(it.hasNext)
{Object obj=it.next();
if(obj.equals("java002"))
al.add("java8");//不可用,在迭代中只可以用it迭代对象操作,可用it.remove();而其他方法如添加修改则要将迭代器换成ListIterator。
}
List:JDK1.2版本之后才有;判断元素是否相同,依据的是存入元素的equal()方法(底层自动调用,这个体现在了一些方法上,如contain())。
ArrayList:JDK1.2版本之后才有;底层使用的是数组数据结构,查询快,增删稍慢(不同步)。
LinkedList:JDK1.2版本之后才有;底层使用的是链表数据结构,查询稍慢,增删速度快。
Vector:JDK1.0版本就有;底层使用的是数组数据结构,(同步的)被ArrayList替代了。此容器已经不使用了,即使要同步,也直接用ArrayList直接来加锁。
ArrayList默认长度为10,超过时按50%递增。
Vector默认长度为10,超过时按100%递增。可变长度数组起始就是不断的new数组来实现
通过构造函数ArrayList可以指定初始化长度:new ArrayList(int length)。
Vector特有方法:凡方法名后面是Element的都是其特有的方法。其中(伪代码如下):
Vector v=new Vector();
v.add(...);
...
Enumeration en=v.elements();
while(en.hasMoreElments())
{sop(en.nextElement());}
枚举是Vector特有的取出方式。因为枚举的名称及方法名过长,所以被迭代器替代了。
LinkedList特有方法:
addFirst();getFirst();removeFirst();addLast();getLast();removeLast();
(注意上述方法的返回值)其中remove在列表为空的情况下会抛异常。
1.6版本之后的pollFirst();pollLast();获取并删除元素操作在列表为空的情况下会返回null。
Set:元素无序(存入和取出的顺序不一定一致),元素不可重复。
HashSet:底层数据结构是哈希表,判断元素是否重复依赖于存入对象的hashCode()和equal()方法。
TreeSet:底层数据结构是二叉树,可对Set集合进行排序。

TreeSet实现自动排序的两种方法:
第一种:存入的元素需要实现Comparable接口,实现里面的public int compareTo(Object obj)方法,返回值为负整数,零,正整数分别代表此对象小于,等于,大于指定对象(注意的知识点,上述obj可以先判断是否是该对象所对应的类的子类,代码:obj instanceof Student;compareTo方法返回零是器保证唯一性的依据)

第二种:构造一个TreeSet集合,根据指定的比较器进行排序(伪代码如下):

TreeSet(Comparator<? super E> comparator) class MyCompare implements Comparator

{

public int compare(Object o1,Object o2)

{//返回值为负整数,零,正整数分别代表o1小于,等于,大于o2}

}

第一种方法叫做:元素的自然排序,也是默认排序;
第二种方法叫做:自建比较器排序。两种并存的情况下,排序依赖第二种。
内容概要:本文聚焦于“基于改进电流解耦与电位平衡的T型三电平逆变器低电压穿越研究”,通过Simulink仿真实现,系统探讨了T型三电平逆变器在电网电压跌落情况下的低电压穿越(LVRT)能力。研究提出了一种改进的电流解耦控制策略与中点电位平衡控制方法,旨在提升逆变器在故障工况下的动态响应性能、系统稳定性及功率调节能力。通过构建详细的Simulink电磁暂态模型,验证了所提控制策略在抑制负序电流、维持直流侧中点电压稳定、实现快速有功与无功功率协调控制方面的有效性,为新能源发电系统并网的可靠运行提供了理论支持和技术路径。; 适合人群:具备电力电子、自动控制及电力系统相关专业知识,熟悉MATLAB/Simulink仿真环境,从事新能源并网、逆变器控制策略研究、电能质量分析或电力系统仿真的研究生、科研人员及工程技术人员。; 使用场景及目标:① 深入理解T型三电平逆变器在低电压穿越过程中的控制难点,掌握改进电流解耦与中点电位平衡的核心控制原理;② 学习并实践在Simulink中搭建高保真度逆变器仿真模型的方法,掌握双环控制、负序分量处理、中点电位反馈调节等关键技术环节;③ 为开展相关课题研究、撰写学术论文或进行工程化设计提供可复现的仿真案例与理论依据。; 阅读建议:建议结合文中所述控制算法,动手搭建并调试Simulink仿真模型,重点关注电流内环与电压外环的参数整定、中点电位波动的抑制效果以及不同电网故障条件下系统的响应特性,从而深入理解控制策略与系统动态性能之间的内在联系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值