java------------------------集合List和迭代器Iterator
关于java的学习记录:
Day15
1.集合的由来:数组的长度是固定的,当添加的元素超过了数组的长度时需要对数组重新定义,太麻烦,java内部给我们提供了集合类,能存储任意对象,长度是可变的,随着元素的增加而增加,随着元素的减少而减少。
2.数组和集合的区别:
a.数组既可以存储基本数据类型,又可以粗糙农户引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值;集合只能存储引用数据类型(对象),集合也可以存储基本数据类型,但在存储的时候会自动装箱变成对象。
b.数组的长度是固定的,不能自动增长;集合的长度是可变的,可以根据元素的增长而增长
Collection包括List(有序)和Set(无序)
List包括ArrayList(数组实现),LinkedList(链表实现)和Vector(数组实现)
Set包括HashSet(哈希算法)和TreeSet(二叉树算法)
3.Collection接口的基本功能:
boolean add(E e)
boolean remove(Object o)
void clear()
boolean contains(Object o)
boolean isEmpty()
int size()
注意:collectioXxx.java使用了未经检查或不安全的操作,add方法如果是list集合一直都返回true,因为list集合中是可以存储重复元素的,如果是Set集合,当存储重复元素时就会返回false,ArrayList的父类的父类重写了toString()方法
4.集合的遍历:就是依次获取集合中的每一个元素
案例:把集合转成数组,可以实现集合的遍历toArray()
5.带all的功能:boolean addAll(Collection c)
boolean removeAll(Collection c)
boolean containsAll(Collection c)
boolean retainAll(Collection c)
6.迭代器概述:集合是用来存储元素的,存储的元素需要查看,那么就需要迭代,即遍历
hasNext()
next()
7.list的方法:
void add(int index,E element) 在指定位置添加元素
E remove(int index)
E get(int index)
E set(int index,E element)修改指定位置的元素
8.训练:向list集合中存储学生对象,通过size()和get()方法结合使用遍历
9.训练:有一个集合,判断里面有没有world这个元素,如果有,添加一个javaee元素
10.ListIterator,list特有的迭代器
11.List的三个子类的特点:
ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高
Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低
Vector相对ArrayList查询慢,线程安全,相对于LinkedList增删慢
LinkedList:底层数据结构是链表,查询慢,增删快,线程不安全,效率高
查询多用ArrayList
增删多用LinkedList
都多用ArrayList