zoukankan      html  css  js  c++  java
  • 集合

    数据结构:
    代表的就是数据的存储方式;
    常见的数据接口:
    线性表、链表、栈、队列、树、图、哈希表;
    栈:先进后出,后出先进;
    队列:先进先出,后进后出;
    链表:把多个节点连接起来;
    节点:分为数据域和指针域,数据域代表的是要存储的数据,指针域代表的是下一个数据对应的位置,或者是上一个数据对应的位置;
     
    ArrayList、LinkedList、Vector的区别:
    ArrayList:
    底层: 数组
    线程不安全:执行效率高,有安全隐患;
    LinkedList:
    底层: 链表
    线程不安全:执行效率高,有安全隐患;
    Vector:
    底层: 数组
    线程安全: 执行效率低,安全;
     
    LinkedList:
    public void addFirst(Object obj):把给定的元素添加的集合的第一个位置;
    public void addLast(Object obj):把给定的元素添加到集合的最后一个位置;
    public Object getFirst():获取该集合中第一个位置的元素;
    public Object getLast():获取该集合汇总最后一个位置上的元素;
    public Object removeFirst():删除集合中第一个位置的元素,返回被删除的元素;
    public Object removeLast():删除集合中最后一个位置的元素,返回被删除的元素;
     
    Vector:
    public void addElement(E obj) --- add(Object obj);
    public Object elementAt(int index) --- get(int index);
    public Enumeration<E> elements() ---- iterator() Enumeration枚举类型;
    public void removeAllElements() --- clear();
    public boolean removeElement(Object obj) --- remove(Object obj);
    public void removeElementAt(int index) --- remove(int index);
    public void setElementAt(E obj, int index) --- set(Object obj,int index);
     
    Enumeration: 枚举(迭代器对象) :
    boolean hasMoreElements() : 判断是否有下一个元素 --- hasNext();
    Object nextElement() : 获取下一个元素 --- next();
     
    增强for循环:
    格式:
    for (数组元素的类型或者集合元素的类型 变量名 : 需要遍历的数组名 或者 集合名) {
    变量名,代表着每一个数组元素 或者 代表着每一个集合元素
    }
     
    泛型:
    作用:约束存储元素的数据类型;
    使用的范围:类上、接口上、方法上;
     
    泛型类:
    class Tool<T> {
    public void method(T t){
    code....
    }
    }
    泛型方法:泛型方法需要定义在返回值类型的前面;
    class Tool<T> {
    //普通方法
    public <K> K method(K num){
    code....
    return num;
    }
    //静态方法
    public static <Q> Q function(Q q){
    code...
    return q;
    }
    }
    泛型接口:
    interface Tool<K> {
    public abstract void method(K num);
    }
    //直接将接口中的泛型实现
    class Demo implements Tool<Integer> {
    public void method(Integer num){
    code...
    }
    }
    在类上不明确泛型的具体类型,在创建对象的时候在明确类型:
    class Demo<Q> implements Tool<Q> {
    public void method(Q num){
    code...
    }
    }
    泛型通配符:
    当使用泛型的时候,又不明确定义什么类型的泛型合适,这个时候可以定义一个通用的泛型类型?
    泛型的边界:
    上边界:?extends E;
    ? 代表着数据类型可以是E数据类型本身或者是E数据类型的子类;
    下边界: ? super E:
    ? 代表着的数据类型可以是E数据类型本身或者是E数据类型的父类;
    泛型使用的注意事项:
    1: ArrayList<Person> list = new ArrayList<Girl>();
    报错, 要求左右两边泛型的数据类型必须一致
    2:泛型是一个编译期的约束,当编译成.class文件后, 该.class文件中没有泛型的约束;
    3:jdk7 : 菱形泛型;
     
    Stack: 集合 :
    底层: 栈;
    方法:
    public E push(E item):把项压入堆栈顶部;
    public boolean empty():测试堆栈是否为空;
    public E peek():查看堆栈顶部的对象,但不从堆栈中移除它;
    public E pop():移除堆栈顶部的对象,并作为此函数的值返回该对象;
    public int search(Object o):返回对象在堆栈中的位置,以 1 为基数;
  • 相关阅读:
    我要好offer之 二叉树大总结
    我要好offer之 字符串相关大总结
    楼层扔鸡蛋问题[转]
    Linux System Programming 学习笔记(十一) 时间
    Linux System Programming 学习笔记(十) 信号
    Linux System Programming 学习笔记(九) 内存管理
    Linux System Programming 学习笔记(八) 文件和目录管理
    Linux System Programming 学习笔记(七) 线程
    Linux System Programming 学习笔记(六) 进程调度
    APUE 学习笔记(十一) 网络IPC:套接字
  • 原文地址:https://www.cnblogs.com/yuhudashen/p/7886206.html
Copyright © 2011-2022 走看看