集合框架1

 

目录

一、集合简介

二、集合框架的类图

制作方式:

三、Collection接口

四、List接口

4.1List接口介绍

4.2List接口特点

4.3List取值方法 

4.4LIst优化

五、ArrayList,LinkedList,Vector三者之间的异同?

六、装箱和拆箱(在jdk1.5之后引入了自动装箱及自动拆箱功能)

6.1装箱:(从小到大)

6.2拆箱:(从大到小)


一、集合简介

集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。 之所以定义多个接口,是为了以不同的方式操作集合对象实现(类):是集合接口的具体实现。

二、集合框架的类图

类图统称也叫做UML(统一建模图)

UML图形包括

类图

   时序图
   组件图
   部署图

制作方式:

第一种:工具:PowerDesigner

第二种:在线网站:www.processon.com

关系的解释:

        继承关系:子类继承父类的行为特征

        依赖关系:是接口里面有某个方法需要用到某个或者接口对象

三、Collection接口

Collection是集合框架的顶级接口(它是所有单列集合的父接口,除开Map,接口都要继承它)

四、List接口

4.1List接口介绍

java.util.List 接口继承自 Collection 接口,是单列集合的一个重要分支,习惯性地会将实现了 List 接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。

4.2List接口特点

1. List集合中的元素是可以重复的!

2. List集合中的元素是有序的!

4.3List取值方法 

示例:

        //实例化List接口
        List myl = new ArrayList();

        //往集合添加数据
        myl.add(1);
        myl.add(5);
        myl.add(2);
        myl.add(6);
        myl.add(9);
        myl.add(3);
        myl.add(4);

 三种方法循环取值:

1. foreach 循环

    for (Object o: myl) {
        System.out.println(o);
    }


2. for 循环

    for (int i = 0; i < myl.size();i++) {
        System.out.println(myl.get(i));
    }


3. Iterator(迭代器):一种对象,能够用来遍历目标中的部分或者全部元素

    ListIterator iterator = myl.listIterator();
    while (iterator.hasNext()) {
       System.out.println(iterator.next());
    }

4.4LIst优化

用到的主要技术是:反射

    // 反射
	static void print(List arrayList) throws Exception {
		Class c = arrayList.getClass();
		Field elementDataField = c.getDeclaredField("elementData");
		elementDataField.setAccessible(true);
		Object[] arr = (Object[]) elementDataField.get(arrayList);
		System.out.println("elementData.length=" + arr.length);
	}

五、ArrayList,LinkedList,Vector三者之间的异同?

:三个类都是实现了List接口,存储数据的特点相同:存储有序的、可重复的数据

不同点

ArrayList :作为List接口的主要实现类,以连续的数组结构存储数据,增删改慢、查询快(下标)线程不安全,效率高
LinkedList:以链表的结构存储数据,对于增删改快、查询慢,使用此类效率比ArrayList高
Vector :作为List接口的古老实现类;线程安全的,效率低已过时

六、装箱和拆箱(在jdk1.5之后引入了自动装箱及自动拆箱功能)

6.1装箱:(从小到大)

故名思意把一个小箱子的装到一个大的箱子里面

代码演示:

值类型 -> 引用类型

int a = 10;
Integer b = a;

6.2拆箱:(从大到小)

故名思意是把一个大的箱子拆开拿出里面的小箱子

代码演示:

引用类型 -> 值类型

Integer c = 20;
int d = c;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值