数组:ArrayList底层是数组的实现。 特性: 1:长度不可变。 查询快:数组的地址是连续的,通过数组的首地址可以找到数组,通过数组的索引可以快速的查找某个元素。 增删慢: 2:查询快(元素有对应的索引,是一片连续的存储空间。1) 链表: 特点: 1:增删快(添加增删元素不会改变原有内容) 2:查询慢() 双向链表: 1: 红黑树: 特点: 查询快。 名词解释: 二叉树:分支不超过两个。 查找树/排序树:是一个有序的二叉树(左子树小于节点,右子树大于节点)左中右。则是从小到大的顺序。 平衡树:左右子树高度差不超过1。 红黑树:趋近于平衡树,查询速度非常快。 Java.util.List; 概述: 是Collection下的一个子接口,在list接口下的集合都有以下特点。 1:有序。 2:有索引。 3:允许重复。 List中的特有功能(和索引相关的增删改查的功能) Void add(int index,E element):在指定索引位置添加元素。 E remove(int index):删除指定索引位置的元素,把删除的元素返回。 E set(int index,E element):修改指定索引个位置的元素。 E get(int index):获取指定索引位置元素。 AarryList:底层实现的数组(查询快,增删快) LinkedList:底层实现的链表(查询慢,增删快) 特有功能: 针对于链表的首尾位置元素的操作。 E getFirst() E getLast() E removeFirst() E removeLast() Set接口的特点: 1:不允许存储重复元素。 2:没有索引,没有带索引的方法,也不能使用普通for循环。 Java。Util。HashSet集合 implements Set接口 特点:底层是hash表的实现,查询效率高。 1:不允许重复存储元素。 2:无索引 3:无序(不保证存和取的顺序) HashSe存储原理: 通过hashCode方法确定索引位置。 再通过equals方法去除重复元素。 总结: 存储元素的操作: 1.先获取对象的hash值去存储元素。 2.Hash值不一样 则比较equals的返回值。 如果是true则认为元素重复。 如果是false,则认为元素不重复,则添加元素。 当我们用HashSet存储自定义对象的时候,如果想保证元素的唯一性,则需要重写HashCode的equals方法。 LinkedHashSet:本质就是一个有序的HashSet: Hash表用于储藏元素。 链表用于记录储藏顺序,当我们获取元素的时候,则会通过链表记录的顺序获取元素。 可变参数: 一种特殊的参数类型,可以接受任意多个同种数据类型的数据,:0种,一种,多种! 格式: 数据类型... 参数名 原理: 将传递的任意多个元素,封装到一个数组中,最后再传递给可变参数的变量。
|