Java集合框架
数组和集合:
数组的特点:
1、在使用之前,要确定空间的大小,空间大小固定
2、数组分配的空间是连续的
3、数组可以用来存储基本类型的数据、对象
比如:Student[] stu=new Student[5]
4、数组存储的数据类型和对象类型必须为同一种类型
集合的特点:
1、集合分配的空间不要求是连续
2、集合只能存储对象,不能够存储基本数据类型
3、存储对象不要求是同一种类型的对象
集合中共性的方法:
add(E e) //add(Object obj) 往容器增加元素
a1.addAll(a12);//把容器a12里面的元素增加到容器a1里面
size() //统计容器中元素的个数
clear() //清空容器中的元素
contains(Object o) //容器中是否包含该元素
remove(Object o) //删除容器中个的某个元素
removeAll(Object o)
a1.retainAll(a12);//取交集,把容器a12的相同的元素取出来,放在a1容器中
a1.containsAll(a12);//包含关系 容器a1包含容器a2中所有的元素,如果包含,则返回true,否则,返回false
String[] array=a12.toArray(new String[5]);//把集合a12转换成数组array
增加:
a1.addAll(1, a12);//从指定位置把容器a12增加到容器a1里面
add(1, "ETC09");//把元素增加到指定位置index上,位置的下标是从零开始
删除:
remove(int index);//删除容器中某个位置上的元素
修改:
set(int index,E element);//修改容器中某个位置上的元素内容为element
查询:
subList(int from,int to);//某个容器(集合)中拿出子容器(集合),可以去from位置上的元素,但不能取to位置上的元素,返回的是一个子容器(集合)
get(int index);//查询容器中index位置的元素,返回一个元素
a12.indexOf("ETC09");//返回容器中某一个元素所在容器中对应的位置
Collection接口包括:List接口、Set接口
List接口包括:ArrayList、LinkedList、Verctor
Set接口包括:HashSet、TreeSet
存储方式为什么这么多种呢?
之所以有这么多容器来装东西,是因为他们各自存储东西的存储方式不一样。
存储方式:数据结构
List接口存储一组不唯一,有序(插入顺序)的对象
不唯一的意思是:数据可以重复
如List的数组:[ETC01, ETC02, ETC03, ETC04, ETC05, ETC06, ETC04, ETC05, ETC06, ETC07, ETC08]
List:
1、List是接口
2、List容器存储的对象可重复(不唯一)
3、List容器有序(输出的时候,按放入时的顺序输出)
List中所特有的方法:
add(int index,E element)
add(int index,Collection c)
indexof(Object o)
remove(int index)
set(int index,E element)
subList(int from,int to)
ArrayList类实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
LinkedList类采用链表存储方式。插入、删除元素是效率比较高。
链表里面有分成数据域和指针域
LinkedList和ArrayList区别:
LinkedList:
底层数据存储方式:链表
插入和删除的效率比较高
ArrayList:
底层数据存储方式:数组
随机访问和遍历元素的效率高
Set接口不存在get()方法
Set:
1、Set是一个接口
2、Set容器存储的对象不可重复(唯一)、无序的对象
底层数据存储方式:哈希表