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方法来输出

原文地址:https://www.cnblogs.com/YanZhuDL/p/11507585.html