JAVA基础篇(10)

数据结构:

定义: 数据结构是计算机存储和组织数据的方式。

常见的数据结构有:JAVA基础篇(10)_第1张图片

  1. 数组(Array): 数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。
  2. 栈( Stack): 栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作(读取的时候先进后出)。
  3. 队列(Queue): 队列也是特殊的线性表,不过它的插入和删除操作分别在队尾后队头(读取的时候先进先出)。
  4. 链表(Linked List): 每个节点都不是连续的连接,每个节点包括数据域和指针,所以一个节点存储着本节点的地址还存在着下一节点的地址。
  5. 树( Tree): 树是典型的非线性结构,只有一个根节点。
  6. 堆(Heap): 是一种特殊的树,其特点是根节点是所有节点最小的。
  7. 哈希表: 指存在一个节点与T节点相等的记录,那么必定在T能够找到相等的记录,以节省查找时间。

扩展:

线性结构: 线性结构是一个有序数据元素的集合。
特点:

  1. 集合中必存在唯一的一个"第一个元素"。
  2. 集合中必存在唯一的一个"最后一个元素"。
  3. 除最后元素之外,其它数据元素均有唯一的"后继"。
  4. 除第一元素之外,其它数据元素均有唯一的"前驱"。

注意:后继指的是每一个元素都有其确定的后继元素,即2后面是3;前驱与其相反;列如(a0,a1,a2,a3…an),a0是其唯一的第一个元素,an是其唯一的最后一个元素,所以此为线性结构。

非线性结构: 非线性结构就是每一个节点都有多条联系。
特点:每个节点具有前驱和多个后继。

数组与集合的比较:

区别:数组的长度是固定的(未定义长度,默认长度为10),集合的长度可以随数据的长度对应增长。

集合结构:
JAVA基础篇(10)_第2张图片
TreeMap:自动排序,非线程安全,键允许为空,值不允许,插入删除比HashMap稍差,二叉树映射结构。
HashMap:无序,非线程安全(不过可以靠ConcurrentHashMap来实现安全),键和值都允许为空,插入删除都快,哈希映射结构。
HashTable:无序,线程安全,键和值都不允许为空,键和值都不允许为空,插入删除最慢,哈希字典结构。
LinkedList:有序,非线程安全,元素允许为空,插入删除快(插入删除时,元素的位置不变),遍历慢(有指针),链表结构。
ArrayList:有序,非线程安全,元素允许为空,插入删除慢(插入删除时,元素的位置会改变),遍历快(没有指针),数组结构。
Verctor:有序,线程安全,元素允许为空,插入删除慢,遍历快,数组结构。
HashSet:无序,非线程安全,元素允许为空,存取快,哈希结构。
TreeSet:无序,非线程安全,元素不允许为空,存取稍慢,树结构。

名称 遍历 插入删除 随机访问
List
Map
Set

集合常用的操作:

//List的操作
List llt=new LinkedList(); //默认类型是Object
llt.add("name");//添加
llt.add("wish");
llt.add("age");
llt.set(0,"id");//修改,索引是从0开始
llt.remove("name");//删除name
llt.clear();//清楚llt中元素
llt.get(0);//获取索引为0的数据
llt.indexof("age");//获取age的索引值
llt.contains("age");//判断是否含有age
llt.isEmpty();//判断llt中是否有元素
llt.length();//获取llt的长度
-------------------------------------------------------------
//foreach遍历
for(String s:llt){
	System.out.println(s);
}
//迭代遍历
Iterator it=llt.Iterator();//生成llt的迭代子
while(it.hasnext())//判断是否有元素
{
	System.out.println(it.next());//输出
}
//for循环遍历
for(int i=0,i

数组结构:

String[] i={"12","32","33","445","253"};//直接创建数组
String[] i1=new String[3];//先初始化,再添值
i1[0]="23s";
i1[1]="for";
i1[2]="ois";
String i2=new String[]{"fr","sdf","ge","go"};//初始化时直接赋值

你可能感兴趣的:(java基础,java)