第一波:Collection中声明15个方法。
第二波:因为List是有序的,进而就有索引,进而就会增加一些针对索引操作的方法。
-插入元素
void add(int index,0bject ele:在index位置插入ele元素
-boolean addALl(int index,Collection eles):从index位置开始将eles中的所有元素添加进来获取元素
object get(int index):获取指定index位置的元素
-List subList(int fromIndex,int toIndex):返回从fromIndex到toIndex位置的子集合获取元素索引
- int index0f(object obj):返回obj在集合中首次出现的位置
- int lastIndex0f(object obj):返回obi在当前集合中末次出现的位置删除和替换元素
object remIve(int index):移除指定index位置的元素,并返回此元素
Object set(int index,0bject ele):设置指定index位置的元素为ele
小结:
增
Add(Object obj)
addAll(Collection coll)
删
Remove(Object obj)
Remov(int index)
改
Set(int index ,Onject ele)
查
Get(int index)
插
Add(int index,Object ele)
addALL(int index,Collection eles)
长度
Size()
遍历
Itertor(),使用迭代器进行遍历
争强for循环
一般的for循环
java.util.Collection:存储一个一个的数据
|-----子接口:List:存储有序的、可重复的数据 ("动态"数组)
|--- ArrayList:List的主要实现类:线程不安全、效率高:底层使用Object[]数组储存
在添加数据、查找数据时,效率高;插入、删除数据时效率低
|----LinkedList底层使用双向链表的方式进行储存
在添加数据、查找数据时,效率低;插入、删除数据时效率高
|---Vector:List的古老实现类:线程安全的、效率低;
Set方
1,Set及其实现类特点
java.util.Collection:存储一个一个的数据
|-----子接口:Set:存储无序的、不可重复的数据(高中学习的集合)
|---- HashSet;主要实现类:底层使用的是HashMap,即使用数组+单向链表+红黑树结构进行储存(jdk8)
|-----LinkedHashSet----:是HashSet的子类;在现有的数组+单向链表+红黑数结构的基础上,又添加了一组双向链表,用于记录添加元素的先后顺序,即可以按照添加元素的顺序实现遍历。便于频繁的查询操作。
|-----TreeSet:底层使用红黑树存储。可以按照添加元素指定的属性的大小顺序进行遍历。
>较List、Map来说,Set使用的频率较少
>用来过滤重复数据
3,Set中常用方法:即为Collection中声明的15个方法。
>无序性: !=随机性
添加元素的顺序和遍历元素的顺序不一致,是不是就是无序性?NO
无序性?与添加的元素的位置有关,不像ArrayList一样是紧密排列的。
这里是根据添加元素的哈希值,计算的其在数组中的存储位置。此位置不 是依次排列的,表现为无序性。
>不可重复性:添加Set中的元素是不能相同的。比较的标准,需要判断hashCode()得 到的哈希值与equals()得到的结果。
要求元素所在的类要重写两个方法:equals()和hashCode()。
同时,要求equals()和hashCode()要保持一致性!我们只需要在IDEA中自动生成两个方法的重写即可,既能保证两个方法的一致性
6.1底层的数据结构:红黑树
6.2添加数据结构后的特点:可以按照添加的元素的指定的属性的大小循序进行遍历。
6.3向TreeSet中添加的元素的要求:
>要求添加到TreeSet中的元素必须是同一个类型的对象,否则会报LassCastException.
>添加的元素需要考虑排序:1.自然排序 2.定制排序
6.4判断数据是否相同的标准
>不再是考虑hashCode()和equals()方法了,也就意味着添加到TreeSet中的元素所在的类不需要重写hashCode()和
>比较元素大小的或比较元素是否相等的标准就是考虑自然排序或定制排序中,compareTo()或compare()的返回值。如果compareTo0)或compare0)的返回值为0,则认为两个对象是相等的。由于TreeSet中不能存放相同的元素,则后一个相等的元素就不能添加到TreeSet中。