Collection框架集合

本文介绍了UML统一建模语言的基本概念、作用和特点,并详细阐述了在系统开发中的三种主要模型。此外,还深入讨论了Java集合框架中的List接口,包括其特点、遍历方式和删除方法,并展示了如何通过迭代器进行优化。同时,文章提及了泛型的概念和作用,以及在简化代码中的应用。最后,探讨了装箱和拆箱的概念及其在JDK1.5前后的变化。
摘要由CSDN通过智能技术生成

前言: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();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值