当前位置:   article > 正文

JAVA基础——集合&二叉树&红黑树_java 那些集合用的二叉树

java 那些集合用的二叉树

   

1、Collection (单列集合的顶级接口)

方法名

说明

boolean add(E e)

添加元素

boolean remove(Object o)

从集合中移除指定的元素

boolean removeIf(Object o)

根据条件进行移除

void clear()

清空集合中的元素

boolean contains(Object o)

判断集合中是否存在指定的元素

boolean isEmpty()

判断集合是否为空

int size()

集合的长度,也就是集合中元素的个数

方法名

说明

public static void sort(List list)

根据元素的排序规则升序排序

public static int binarySearch(List<?> list,T key)

二分查找

public static T max(Collection<?> coll)

根据排序规则获取最大值

public static T min(Collection<?> coll)

根据排序规则获取最小值

public static void reverse(List<?> list)

反转

迭代器 (遍历过程中需要删除元素时使用)只用于集合

2、List (有序,可重复,有索引)

方法名

描述

void add(int index,E element)

在此集合中的指定位置插入指定的元素

E remove(int index)

删除指定索引处的元素,返回被删除的元素

E set(int index,E element)

修改指定索引处的元素,返回被修改的元素

E get(int index)

返回指定索引处的元素

2.1 Arraylist底层是数组结构实现,查询快、增删慢

  1. ArrayList底层是一个数组
  2. 当初始化ArrayList,数组的长度为0
  3. 当第一次添加的时候,数组的长度为10
  4. 以后添加时,如果数组的长度不满足时,进行扩容 ,按1.5来进行扩容
  5. 扩容之后,将原数组中的元素拷贝到新的数组中

2.2 LinkedList 底层是链表结构实现,查询慢、增删快

方法名

说明

public void addFirst(E e)

在该列表开头插入指定的元素

public void addLast(E e)

将指定的元素追加到此列表的末尾

public E getFirst()

返回此列表中的第一个元素

public E getLast()

返回此列表中的最后一个元素

public E removeFirst()

从此列表中删除并返回第一个元素

public E removeLast()

从此列表中删除并返回最后一个元素

3、Set (不重复,无序,无索引)

3.1 TreeSet (底层是红黑树,可以按规则排序  实现Comparable接口(对象类)/使用comparator比较器(创建TreeSet对象时))

3.2 HashSet(底层哈希表,无序,不重复,无索引)

JDK8

  • 节点个数少于等于8个
    数组 + 链表
  • 节点个数多于8个
    数组 + 红黑树

4、Map常用方法

方法名

说明

V put(K key,V value)

添加元素

V remove(Object key)

根据键删除键值对元素

void clear()

移除所有的键值对元素

boolean containsKey(Object key)

判断集合是否包含指定的键

boolean containsValue(Object value)

判断集合是否包含指定的值

boolean isEmpty()

判断集合是否为空

int size()

集合的长度,也就是集合中键值对的个数

遍历方式

方法名 方式一

说明

Set<K> keySet()

获取所有键的集合

V get(Object key)

根据键获取值

方法名 方式二

说明

Set<Map.Entry<K,V>>entrySet()

获取所有键值对对象集合

K getKey()

获得键值

V getValue()

获得值

4.1 HshMap (底层是Hash表结构)

4.2 TreeMap (底层是红黑树)

HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap。

HashMap的结果是没有排序的。TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。HashMap里面存入的键值对在取出的时候是随机的,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map中插入、删除和定位元素,HashMap是最好的选择。TreeMap取出来的是排序后的键值对。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。
 

 二叉树

红黑树的红黑规则:

  • 每一个节点或是红色的,或者是黑色的

  • 根节点必须是黑色

  • 所有叶子节点(空的节点被称作叶子节点)都是黑色的

  • 不能出现两个红色节点相连 的情况

  • 对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/214732
推荐阅读
相关标签
  

闽ICP备14008679号