JAVA基础篇(10)

数据结构:

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

常见的数据结构有:在这里插入图片描述

  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),集合的长度可以随数据的长度对应增长。

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

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

集合常用的操作:

//List的操作
List<String> llt=new LinkedList<String>(); //默认类型是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<llt.size(),i++)//size()方法是获取元素个数
{	
	System.out.println(llt[i]);//输出
}

//Map的操作
Map map=new HashMap();
map.put("1","one");//增加元素
map.put("2","two");
map.put("3","three");
map.putall(map1);//将map1中元素全部放入map中
map.clear();//清除map中元素
map.remove("1");//删除键为1的元素
map.isEmpty();//判断是否为空
map.containValue("one");//判断是否有值为one的
map.containKey("1");//判断是否有键位1的
map.get("1");//查找键为1的
map.size();//元素的个数
------------------------------------------------------------------
//用keySet()遍历,获取key值
for(String key:map.keySet())
{
	System.out.println("元素值:"+map.get(key)+"key值"+key);
}
//用迭代器遍历
Iterator it=map.Iterator();
while(it.hasnext())
{
	System.out.println(it.next());
}

数组结构:

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"};//初始化时直接赋值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值