zoukankan      html  css  js  c++  java
  • Java基础--第十七天

    泛型

             一、常见数据结构:栈,队列,链表,数组,树,图,堆……

            

                       栈:先进后出--压栈、弹栈

                       队列:先进先出

                       数组:存储多个同一种元素,元素有编号【数组插入/删除数据】

                                查询快,增删慢

                       链表:把一些结点通过链子链接起来的数据结构。

                                结点:由地址(指针)域和数值域组成

                                增删快,查询慢

             二、List三个子类特点

                       线程安全(同步)【效率降低】:

                       ArrayList类:底层数据结构是数组,查询快,增删慢,不安全

                       Vector:底层数据结构是数组,查询快,增删慢

                                线程安全,效率低

                       LinkedList:底层数据结构是链表,查询慢,增删快;

                                线程不安全,效率高

             三、Vector特有功能

                       public void addElement(Object obj)---add

                       public Object elementAt(int index)---get

                       public Enumeration elements()----Iterator[hasNext   next]

                       public int size()

             四、LinkedList特有功能

               添加

                       void addFirst(E e)

                       void addLast(E e)

               获取

                       Object getFirst()

                       Object getLast()

               删除

                       Object removeFirst()

                       Object removeLast()

    【模拟题】通过LinkedList模拟栈结构---包装

             要模拟的对象特点

             五、泛型

                       任意的类型,是一种把明确数据类型的工作放在了创建对象或者调用方法时候进行的特殊类型。

                       模仿数组解决

                       泛型特点:

                                A:解决黄色警告线问题;

                                B:把运行期间的类型转换异常提前到编译期间;

                                C:优化程序设计

                       用于限定存储数据类型一致问题,数据类型后面

             六、增强for循环

                       格式

                       作用

                                增强for和迭代器一般只选一种,增强for是来替代迭代器的

                       注意:增强for是用来替代迭代器的,不能用集合对象对集合对象进行修改

                       泛型类:

                                把泛型定义在类上。

                       泛型方法:

                                泛型定义在方法上

                       泛型接口

                                实例:String泛型中追加int型数据

             

    Day16总结

    1:常见的数据结构

          (1)提升等级:数据结构+算法+UML+设计模式

          (2)栈,队列,数组,链表

               栈:先进后出

               队列:先进先出

               数组:查询快,增删慢

               链表:查询慢,增删快

    2:List的三个儿子

          (1)List的三个儿子特点:

               List

                     |--ArrayList

                          底层数据结构是数组,查询快,增删慢

                          线程不安全,效率高

                     |--Vector

                          底层数据结构是数组,查询快,增删慢

                          线程安全,效率低

                     |--LinkedList

                          底层数据结构是链表,查询慢,增删快

                          线程不安全,效率高

          (2)根据需求使用具体对象:

               是否要安全:

                     是:Vector

                     否:ArrayList,LinkedList

                          查询多:ArrayList

                          增删多:LinkedList

               不清楚时,用ArrayList。

    (3)ArrayList

               重写equqls三个步骤

                     1. 判断是否为同一个对象

                     2. 判断是否为该类的对象

                     3. 向下转型,然后根据需求比较成员变量

          (4)Vector     C++中依旧在用  STL

               有自己的特殊功能。

               但是不用,被新功能给替代了。

          (5)LinkedList(存储字符串和自定义对象)

               有自己的特殊功能。可以很方便的操作头和尾。

          (6)案例:(今天作业之一)

               A:ArrayList存储字符串并去除重复值

               B:ArrayList存储自定义对象并去除重复值

                     需求:我们认为同姓名和同年龄的人即为同一个人。

               C:用LinkedList模拟栈数据结构

    3:泛型

          (1)泛型是一种把明确类型的工作放在了创建对象或者调用方法时候才去明确的特殊的类型。

          (2)格式:

               <数据类型>

          (3)好处:

               A:解决了黄色警告线问题

               B:把运行期间的转换异常给提前到了编译期间

               C:优化了程序设计,不需要做强制类型转换了

          (4)泛型的前世今生

               A:泛型类

               B:泛型方法

               C:泛型接口

          (5)泛型的使用:

               看API中的类或者接口,其后是否跟有<>,如果有,就是泛型的应用。

               一般在集合中用。

    4:增强for循环

          (1)格式:

               for(数组或者Collection集合的元素类型 变量 : 数组或者Collection集合的对象)

               {

                     直接使用变量即可。

               }

          (2)好处:

               方便了数组和Collection集合的遍历。

          (3)注意(注意):

               A:增强for是用来替代迭代器的。

               B:不要在用增强for遍历集合的时候,用集合对集合本身进行修改。

    (4)遍历集合三种方式

               迭代器

               普通for+get

               增强for(工作时候用)

  • 相关阅读:
    Vue.js双向绑定的实现原理和模板引擎实现原理(##########################################)
    JavaScript:最烂与最火
    JSP九大内置对象和四种属性范围解读
    codevs1009
    hdu 4869 Turn the pokers (2014多校联合第一场 I)
    OpenGL——点的绘制(使用OpenGL来绘制可旋转坐标系的螺旋线)
    nodejs 批处理运行 app.js
    jquery更新后怎样在一个站点中使用两个版本号的jQuery
    vs连接mysql出错解决方法
    uva 10627
  • 原文地址:https://www.cnblogs.com/zhidianhcuan/p/4385496.html
Copyright © 2011-2022 走看看