java-day11&day12

数据结构

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率 。

常见的数据结构

数据存储的常用结构有:栈、队列、数组、链表和红黑树.

stack,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。,元素先进后出。

压栈:就是存元素。     弹栈:就是取元素。

队列queue,简称队,它同堆栈一样,也是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。 队列的入口、出口各占一侧 ,元素先进先出。

链表:linked list,由一系列结点node(链表中每一个元素称为结点)组成,结点可以在运行时i动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域 ,查找元素慢:想查找某个元素,需要通过连接的节点,依次向后查找指定元素

**数组** 查找元素快:通过索引,可以快速访问指定位置的元素 ,增删元素慢 。

红黑树

二叉树是每个节点最多有两个子树的树结构。顶上的叫根结点,两边被称作“左子树”和“右子树”。

红黑树本身就是一颗二叉查找树,将节点插入后,该树仍然是一颗二叉查找树。也就意味着,树的键值仍然是有序的。

红黑树的约束:

  1. 节点可以是红色的或者黑色的

  2. 根节点是黑色的

  3. 叶子节点(特指空节点)是黑色的

  4. 每个红色节点的子节点都是黑色的

  5. 任何一个节点到其每一个叶子节点的所有路径上黑色节点数相同

红黑树的特点:

​ 速度特别快,趋近平衡树,查找叶子元素最少和最多次数不多于二倍

集合有ArrayList,LinkedList,HashSet,HashMap,Iterator(迭代器)。

java集合框架的三大类接口:Set, List,Map;
java集合框架的三大类接口之间的区别:
List接口:元素存取有序,带有索引,通过索引就可以精确的操作集合中的元素(与数组的索引是一个
道理),可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。
Set接口::存储无序(不再支持索引),不能存储重复数据
Map集合:存储数据是以键值对的形式存储
ArrayList和LinkedList的区别主要有;
1.数据结构:ArrayList是基于动态数组的数据结构,LinkedList是基于链表的数据结构;
2.访问数据:ArrayList强于LinkedList,ArrayList可以进行随机访问,而LinkedList
  要移动指针,因此,在速度上,ArrayList也强于LinkedList,因为LinkedList只能用
  从一头到另一头的方式进行访问;
3.增加数据和删除数据:LinkedList优于ArrayList,LinkedList只要改变元素的指针即可,
  而ArrayList需要移动数据;

AArrayList与LinkedLIst的共同特点:

  1. 它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)。

  2. 它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。

  3. 集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。

Set特点:存储无序(不再支持索引),不能存储重复数据 ,HashSet,通常用来输出数据的方案:Iterator实现数据的删除和遍历

HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

泛型集合

存放数据的数据类型不确定,导致使用的时候,出现类型转换格式不匹配的异常,数据不安全

泛型解决普通集合的问题:1、效率高 2、类型安全的

泛型:泛型类、泛型方法、泛型接口、泛型集合

语法:

集合<数据类型> 集合名=new 集合<数据类型>();

支持菱形语法:

集合<数据类型> 集合名=new 集合<>();

集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。当我们在取出每一个对象,并且进行相应的操作,这时必须采用类型转换。

   

定义和使用含有泛型的类

定义格式:

修饰符 class 类名<代表泛型的变量> {  }

含有泛型的方法

定义格式:

修饰符 <代表泛型的变量> 返回值类型 方法名(参数){  }

具有泛型的类中可以有泛型的方法,**调用方法时,确定泛型的类型**。

含有泛型的接口

定义格式:

修饰符 interface接口名<代表泛型的变量> {  }

例如:

public interface MyGenericInterface<E>{
    public abstract void add(E e);
    
    public abstract E getE();  
}

Collections

Arrays:操作数组。排序、查找

Collections:操作集合。排序、查找

java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:

  • public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。

  • public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。

  • public static <T> void sort(List<T> list):将集合中元素按照默认规则排序。

  • public static <T> void sort(List<T> list,Comparator<? super T> ):将集合中元素按照指定规则排序。

​ BinarySearch()必须基于排序。

猜你喜欢

转载自blog.csdn.net/weixin_41804367/article/details/88851800
今日推荐