• java第八章:集合容器


                         Collection接口(有List和Set两个子接口,不唯一,无序)

                  List接口(不唯一,有序)                       Set接口(唯一,无序)  

              三个实现类:ArrayList    LinkedList  Vector          三个实现类:HashSet                 TreeSet

                                      HashSet的子类:LinkedHashSet

     

    Collection接口中常用的方法有:add(),size(),iterator(),remove()...

    ArrayList是一种可变长度的数组,属于线性结构,本质上是分配连续的数组,非线性安全的;        Vector和ArrayList相比

    优点是:访问查询,遍历元素快。                                   线性安全,效率相对比ArrayList低

    缺点是:插入和删除元素慢,因为需要大量移位,查询内容效率低下。

    LinkedList是一种链表结构,在内存中的存储位置是不连续的,与ArrayList相反。

    优点是:插入,删除元素快

    缺点是:访问查询,遍历元素慢,因为没有固定下标

    特有的方法:removeFirst,getFirst,setFirst.

          removeLast,getLast,setLast.

    泛型<>:限定集合中元素的类型,这样能容纳的元素类型就固定了;

    语法eg:List<Student> list = new ArrayList<Student>();

    作用是:1.避免强制转换 2.消除代码中的黄色警告!

    Iterator<E>类:迭代器,用来遍历集合中的元素(尤其是对不能通过下标查找元素的集合)

    有两个常用方法:iterator.hasNext();-->判断集合中是否有下个元素;

            iterator.next();--->取到元素;

    Stack类:栈(Last In Fist Out/LIFO或First In Last Out/FILO)--->后进先出或先进后出

    入栈(压栈):将元素添加栈中,push();

    出栈(弹栈):将元素从栈定移除,pop();

    而队列:先进先出!

     

    HashSet:是一种基于哈希表的散链存储结构,无序,唯一

    优点:添加速度快、查询速度快,删除速度快!  缺点:无序(添加顺序)

    hashcode:哈希码,每个元素都有固定的哈希码值,数字的哈希码就是数字本身,Y=K(X)=X%7.

    hashcode 和equals的关系:

    1.在HashSet集合中实现添加元素时,会先调用Object类中的hashcode()方法,计算出当前对象的哈希码,确定其摆放位置。然后与集合中对象的hashcode进行比较,如果哈希码相同,则会调用Object中的equals()方法,比较内容是否相同!

    2.如果hashcode不同,将不再调用equals方法;

    3.如果equals()相同,那么hashcode肯定相同;哈希码相同,equals结果不一定相同!

    4.如果向Set集合中添加对象时,想要去掉重复项,需要重写Object类中的hashcode()和equals()方法;

  • 相关阅读:
    检测对象类型的两种方式,constructor属性和instanceof
    Javascript中的事件
    工厂模式、寄生构造函数模式、稳妥构造函数模式比较
    ECMAScript中的原型继承
    Javascript中new的作用
    js组合继承
    【原型模式】--重写原型对象prototype的影响
    动态原型模式
    js类型检测
    Javascript中的继承与复用
  • 原文地址:https://www.cnblogs.com/SXTzhaopengda/p/7003524.html
Copyright © 2020-2023  润新知