Java入门—java中的数据结构

Java入门—java中的数据结构

数组结构、链表结构、树结构
树结构

(此结构比较特殊 单独说明 后面会根据基础接口来分类)

树结构在Java中可以狭义的理解为二叉树。

二叉树的遍历: 前序、中序、后序。通常TreeSet中使用的是中序遍历,而普通的HashSet是无序的。

TreeSet 存放的实体类上实现Comparable接口 重写 compareTo方法 进而定义排序规则。

@override
public int compareTo(Object obj){
//	return 0;//表示相同不添加
//	return 1; //添加到右枝
//	return -1; //添加到左枝
}

方法说明:要添加的对象 调用此方法 与原有的对象Object 进行对比。

实现collection接口
1、list接口

ArrayList类、LinkedAlist类、Vector类。

区别:ArrayList是数组结构、LinkedList是链表结构、Vector是ArrayList的线程安全类。

2、set接口

HashSet类、TreeSet类、LinkedHashSet类。

区别:HashSet存储元素是将元素储存在HashMap的键中、TreeSet是将元素存储在二叉树中、LinkedHashSet是将每个元素添加上下指向(具体参见后面 数组和链表的区别)。

实现map接口

HashMap类、HashTable类、TreeMap类、LinkedHashMap类、ConcorrentHashMap类。

区别:HashMap是链表与数组的结合(这里不具体解释插入数据的方式)、HashTable 在HashMap的基础上保证线程安全、TreeMap区别于HashMap是有序的,类比TreeSet、LinkedHashMap在添加每个元素是增加上下指向(链表特点)类比LinkedHashSet、ConcorrentHashMap相比于HashTable既保证了线程安全,有保证了性能。

其中list有序、set无序(TreeSet特殊)、map为键值对

数组与链表的区别
数组:

数组中内存中占有一块连续的空间,在访问数组时遍历性能高–>查找性能高。但进行增删操作 性能较低。因为增加需要重新分配内存空间,删除需要将被删除元素 后的所有元素前移。

链表:

在内存中给每个元素随机分配内存空间,每个元素之间为链式连接 所以插入和删除值用改变链式指向即可。性能较高。但遍历性能较差,对链表本身来说:操作两端元素比操作中间元素性能更好。

链表类型

1、单向链表,两个相邻元素间只有一个方向的指向,只能通过obj.next()查找下一个元素;

2、双向链表,两个相邻元素间有往返两个方向的指向,通过obj.next() 查找下一个和 obj.prev()查找上一个。

图为说明数组和链表在内存中的图例(摘自https://baijiahao.baidu.com/s?id=1639013947856587206&wfr=spider&for=pc)
图为说明数组和链表在内存中的图例(摘自https://baijiahao.baidu.com/s?id=1639013947856587206&wfr=spider&for=pc)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值