一、集合与数组
相同点: 都可存储一系列数据,即都为数据的容器,存储Object类型时存储对象都为引用类型
不同点:1) 数组可存储基本数据类型,集合不可以
2)数组长度为定值,数组内数据数量未知时不宜使用;集合长度可变,较数组更为灵活,适用性更广。
注:同一数组可存储不同数据类型的数组,例:Object[] arr={"String",new Integer(1)};
集合框架结构图:
二、存储对象引用
元素在内部索引过程:
三、接口的类别及其方法测试
子接口:
①List(interface)
a.元素有序可重复
b.通过索引访问指定位置的集合元素,默认的索引设置为按元素的添加顺序设置(索引为0~size()-1)
实现类(导util包):
ArrayList:基于列表的数据结构,对象位置连续,在增删改查操作中,数据量大的情况下ArrayList对于查操作较LinkedList更为方便,因为ArrayList在增删操作时需要移动数据,而在查(get、set)数据方面速度很快。
LinkedList:基于双链表的数据结构,对象位置不连续,在增删改查中,数据量大的情况下LinkedList对于增删操作较ArrayList更为方便,因为LinkedList对象使用类似指针(java中没有指针)的索引进行连接,在查数据时需要根据索引一步一步查,而在增删(add、remove)方面速度很快。
Vector:该类用法与List用法差不多,在使用上,Vector是线程安全的,ArrayList是线程不安全的。不过即使为保证List集合线程安全,也不推荐使用。(安全隐患:当多用户同时操作时造成的线程问题,操作系统详解。)
图示:
②Set(interface)
a.无序
b.不重复