A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.数据结构:常用的数据结构有栈、队列、链表和红黑树结构
    1)数据结构_栈(stack):先进后出(弹夹) FILO-First In Last Out
          *入栈:将元素存入集合中
          *出栈:取出集合中的元素(先进去的元素后出来)
          *入口和出口在集合的同一侧
             例:1、2、3号元素按顺序入栈,出栈顺序为 3、2、1号元素
          *应用场景:反转元素
    2)数据结构_队列(queue):先进先出
          *入口和出口在集合的两侧
             例:排队安检—包裹先进去的先出来
          *应用场景:处理高并发场景
    3)数据结构_数组(arry):查询快,增删慢
          *查询快:数组的地址是连续的,我们通过数组的首地址找到数组,通过数组的索引可以快速查询某个元素
          *增删慢:数组的长度是固定的,我们想要增加/删除一个元素,必须创建一个新数组,把源数组的数据复制过来
        4)数据结构_链表(linked list) :查询慢、增删快
          *查询慢:链表中地址不是连续的,每次查询元素都必须从链表头开始查询
          *增删快:链表结构增加/删除元素,对链表整体结构没有影响
          *链表中每一个元素也称之为一个节点
            单向链表
              链表中只有一条链,不能保证元素的顺序
                    |数据|下一个节点的地址|
        双向链表
                |上一个节点的地址|数据|下一个节点的地址|
        5)红黑树结构:是一张近似平衡的二叉查找树,查询速度非常快,查询叶子节点最大次数和最小次数不能超过2倍
          *约束:每个节点或者是黑色,或者是红色。
             根节点是黑色。
             每个叶子节点(NIL)是黑色。 [这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
             如果一个节点是红色的,则它的子节点必须是黑色的。
             从一个节点到该节点的子孙点的所有路径上包含相同数目的黑节点。[确保没有一条路径会比其他路径长出俩倍]
                         
2.List接口:有序/可以存储重复元素/有索引
          1)ArrayList<E>实现类-底层数据结构为数组结构,查询快,增删慢
          2)LinkedList<E>实现类-底层数据结构为双向链表,查询慢,增删快
            *特点:底层是链表结构/里面包含了大量操作首尾元素的方法
               注:双向链表结构找到head 和 tail是快的,所以LinkedList实现类中有很多操作head和tail元素的方法
          3)Vector:是旧的实现类,了解即可,是单线程集合,被ArrayList取代了
       
3.Set接口:没有索引/不允许存储重复元素
          1)HashSet<E>实现类-底层数据结构为哈希表结构(查询速度非常快)
            *实现了Set接口—没有索引/不允许存储重复元素
            *是一个无序的集合,存储元素和取出元素的顺序有可能不一致
            *拓展:哈希表
               **哈希值:是一个十进制的整数,由系统随机给出(就是对象的地址值,但是是一个逻辑地址,不是数据的物理地址
                **哈希表:= 数组 + 链表/红黑树
                     数组结构:把哈希值相同的对象链在一起作为一个元素放到数组中
                         链表结构/红黑树:把相同哈希值的元素连接到一起(如果链表超过八位则把链表转换成红黑树)
                     特点:查询速度快
          2)LinkedHashSet<E>- 底层是一个哈希表(数组+链表/红黑树)+链表(记录元素的存储顺序)
            *保证元素有序
          3)使用HashSet集合来存储自定义元素
            *许要重写hashCode和equals方法,来保证保存元素的唯一
       
4.可变参数:是JDK1.5之后出现的新特性
            *使用前提:当方法的参数列表数据类型确定,但个数不确定
                *使用格式:定义方法时使用
                    修饰符 返回值类型 方法名(数据类型... 变量名){}
                *原理:可变参数底层就是一个数组
                *注意事项:
                   一个方法的参数列表,只能有一个可变参数
                   如果方法的参数有多个,可变参数必须卸载末尾
                *可变参数的终极写法
                  public static void method(Object... obj){}
       
5.Collections
   *常用方法
          static <T> boolean addAll(Collection<? super T> c, T... elements):往集合中添加一些元素
          static void shuffle(List<?> list): 打乱集合顺序
          static <T> void sort(List<T> list): 将集合中元素按照默认规则排序
                    自定义类必须对compareTo方法进行重写
                          **this - 参数:升序
                          **参数 - this:降序
          static <T> void sort(List<T> list,Comparator<? super T> c):将集合中元素按照指定规则排序

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马