Java中学校没学过的东西
Collection集合细分为两类一个是List集合还有Set集合
list集合 容器:存储数据 功能:增删改查
list.remove(下标/存放的值);删除指定的值
list.removeAll(list):删除在集合中插入的集合的所有值
list.clear();删除存放的所有的值
list.add(值);往集合末尾添加值
list.add(下标值,添加的值):往指定坐标位置插入的值
标准循环for(int i = 0;i <= list.size();i++){}
增强型循环(Object obj :list){}
list.addAll(Arraylist list);将另一个list插入到list末尾中
list.addAll(下标,Arraylist list);将另一个list插入到list末尾中
list.set(下标,修改的值);把指定下标上的值改为修改的值
包含:list.contains(Object obj) 将集合每个值进行比对,判断集合是否有包含这个对象的值,有返回true 无则返回false
迭代器对象 Iterator 方法:hasnext():判断下一个是否为空,不为空为true 为空为false(一般将其写入循环当中);next():跳转至下一个元素
使用方法 : Iterator it = list.interator();-------->it.hasnext(); Or it.next();
正向迭代
ListIterator lis = list.listIterator(); while(lis.hasnext()){ system.out.println(lis.next()); }
反向迭代(需要正向迭代一次才能反向迭代)
ListIterator lis = list.listIterator(); while(lis.hasPervious){ system.out.println("lis.previous"); }
常用的子类:
1.ArrayList:底层是数据结构,默认长度是10,当我们存储数据超过了10个之后,它会自动增加原来的一半(5个)
由于有下标的存在,所以查阅很快,但是插入和删除时,效率反而很低
2.LinkedList: 底层是链表结构,无下标排序
由于没有下标的存在,所以查阅特别慢,但是插入和修改是效率很高
3.Vector:底层是数据结构,默认长度是10,超过默认长度自增十个,他和list相比是线程安全 ,已经被淘汰了
Set集合
list是有序的,元素可以重复,因为集合当中有索引
Set是无序的,元素不可以重复,集合当中无索引
分为了hashSet和TreeSet
hashSet底层是哈希表,hash是由hash值组成的一张表,每个元素都有一个叫hashCode方法,这个方法返回的是该对象所在的物理内存地址,16位进制组成的数,这个数就是hash值,一般情况下每个数的hash值是不一样的
然而在hashSet比较过程中,其本身的equal方法是比对其物理内存地址
TreeSet TreeSet底层是二分叉数,会有自己的排序规则,按照自己的排序规则进行排序,存放在里面的元素必须是具备比较性的,因为不具备比较性的话,TreeSet无法排序。 就会提示错误
(这里有个点要多加注意,因为set是无序的,所以要对其输出,要使用Iterator方法来输出