前言:UML简介资料来源于百度百科(科普中国·科学百科)转载
Question:1、什么是UML(UML图)?
UML(Unified Modeling Language) 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。UML的定义包括UML语义和UML表示法两个元素。
2、UML图的作用
UML的目标是以面向对象图的方式来描述任何类型的系统,具有很宽的应用领域。UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模,而且适用于系统开发的不同阶段,从需求规格描述直至系统完成后的测试和维护。
3、UML的特点
(1)UML统一了各种方法对不同类型的系统、不同开发阶段以及不同内部概念的不同观点,从而有效的消除了各种建模语言之间不必要的差异。
(2)UML建模能力比其它面向对象建模方法更强。
(3)UML是一种建模语言,而不是一个开发过程。
4、主要模型(在UML系统开发中有三个主要的模型)
功能模型:从用户的角度展示系统的功能,包括用例图。
对象模型:采用对象、属性、操作、关联等概念展示系统的结构和基础,包括类图、对象图、包图。
一张图概括 collection集合
类图中:
1、Collection接口:集合框架的顶级接口、是Set和List的父接口、但不是Map的父接口
2、lterator是迭代器:用于遍历集合框架中元素的一个接口
3、ListIterator只为List(依赖于ListIterator)服务
一、 List(接口)的特点与遍历方式以及删除方法
A.特点:不唯一:不是唯一的、可以添加重复元素
有序:元素添加的顺序于输出的顺序一致
B.List遍历方式
List list = new ArrayList<>();
list.add("ab");
list.add("cd");
1、for下标
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
2、foreach
for (Object object : list) {
System.out.println(object);
}
3、迭代器Iterator
//获取迭代器
Iterator it = list.iterator();
//hasNext():判断集合中的下一个元素是否存在,不移动下标(重点)
//next():移动下标并取出当前元素
//循环遍历
while(it.hasNext()) {
System.out.println(it.next());
}
C、List删除方法
1、for正向删除
int len = list.size();//取最终结果 (依次取1..4)
for (int i = 0; i < len; i++) {//正向
list.remove(0);//从0开始删除
}
2、for逆向删除
int len = list.size()-1;//元素个数为4
for (int i=len; i>=0; i--) {//逆向
list.remove(i);
}
3、iterator(推荐)
//获取迭代器iterator
ListIterator it = list.listIterator();
while(it.hasNext()) {//先移动下标,在删除元素
it.next();
it.remove();
}
4、clear 清空
list.clear();
二、List优化
List优化核心概念:
1、初始化容量 10
2、负载因子(扩容比例) 1.5
3、计算公式:当前容器大小*负载因子
代码展示:getLen方法下一章会重点讲解
public static void main(String[] args) {
List list = new ArrayList(50);//定义空间大小 限定容器大小
for (int i = 0; i < 50; i++) {
list.add(i);
System.out.println(i);
//调用getLen方法
getLen(list);
}
}
public static void getLen(List list) {
try {
//获取类对象
Class<? extends List> cla = list.getClass();
//获取类中对应的属性
Field field = cla.getDeclaredField("elementData");
//设置访问权限
field.setAccessible(true);
//获取属性
Object[] object =(Object[]) field.get(list);
//获取数组长度
System.out.println("当前List集合的大小为"+object.length);
} catch (Exception e) {
e.printStackTrace();
}
}
效果图:
三、泛型
泛型:以类型作为参数的类叫做泛型
作用:提高查询的健壮性(容错能力)、简化代码
简化前代码:
List<Integer> list = new ArrayList();
list.add(1);
list.add(2);
list.add(5);
list.add(8);
//获取迭代器
Iterator it = list.iterator();
//循环遍历
while(it.hasNext()) {
//获取元素
Object val = it.next();
//类型转换
int num = Integer.parseInt(val.toString());
//判断是否是偶数
if(num%2==0)
System.out.println(num);
}
简化后代码(list定义在简化前代码中):
ListIterator<Integer> it = list.listIterator();
while(it.hasNext()) {
int num = it.next();
//判断是否是偶数
if(num%2==0)
System.out.println(num);
}
泛型的默认类型是Object
四、装箱、拆箱jdk1.5之前手动装拆箱(之后自动装拆箱)
装箱:值类型===》引用类型
int a = 1;//值类型
Integer b = new Integer(a);
拆箱:引用类型===》值类型
Float f = new Float(1.8f);
float floatValue = f.floatValue();