#Java学习之路——基础阶段二(第三篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容。
前言:此随笔主要是Java基础中的基础,相信大家对这方面肯定有着自己的理解和认识,具体详解可以参照万能的baidu,有的我就一笔带过,希望在我的学习之路上能够有大牛进行指导,也有更多的小伙伴共勉。
1.数据结构
常见的数据结构有:栈,队列,链表,数组,红黑树。
栈(stack):原则是先进后出,线性表。
队列(queue):原则是先进先出,线性表。
数组(Array):有序的元素序列,优点:查询快;缺点:增删慢。
链表(Linked list):以node(节点)生成的炼表,优点:增删快;缺点:查询慢。
红黑树(binary tree):是每个节点不超过2个的有序树速度特别快,趋近于平衡树,查询叶子树节点最少和最多次数不多余二倍。
2.List集合
回归正题在第二篇学习了Collection接口之后,现在就是Collection的子类。
list接口的特点:1.它是一个有存储有序的集合。
2.它是一个带有索引的集合。
3.集合中可以有重复的元素。
List接口的常用方法:
·add 增加指定元素到指定位置
·get 获取指定位置的元素
·remove 移除指定位置的元素
·set 用指定的元素替换指定位置的元素
List接口的子类:ArrayList
LinkedList
3.Set集合
Set接口的特点:1.它是一个无序的集合。
2.它存储的元素是不可以重复的。
3.在HashMap中为了保证元素的唯一性,要依赖于equals方法和hashcode方法
HashSet的存储结构:哈希表实现的
哈希表要进行了解:底层是链表+数组实现,但是在JDK8之后采用了链表+数组+红黑树(当链表的长度超过8之后使用)的方法进行实现。在采用红黑树后极大的优化了HashMap的效率
HashSet存储自定义元素的时候要注意的是一定要覆盖重写equals方法和hashcode方法一般的IDE工具会提供快捷的书写方式。
Set是一个无序的集合,那么子下的HashSet也是一个无序的集合如果想要有序的集合,那么可以采用LinkedHashSet来进行元素的排序。
这里的遍历也是可以使用Iterator迭代器或者是foreach来进行的。
扩展:可变参数:
在之前定义参数的时候是对参数个数有一定的了解,但是如果说遇到同类型的多个参数可以使用可变参数的定义方法进行使用从而达到代码的灵活和简化:
格式:修饰符 返回值 方法名(参数类型...参数名){}
这个格式和之前认知的在参数列表中传入数组的道理也是等价的。
4.Collections
这里的Collection加了s是集合的工具类,肯定有常用的功能方便对多数据的使用:
·addAll 这里可以添加多个元素;
·shuffle 打乱集合内的顺序
·sort 将集合元素按照默认规则排序(从小到大)
这里的sort传入的值不一样可以为Comparator自定义规则进行排序
Comparator比较器:
首先来了解一下比较器有Comparable接口和Comparator比较器,使用的sort就是实现了Comparable接口比较死板,如果是想要灵活的进行比较可以使用Comparator接口
那么要实现这个接口里的比较方法就要覆盖重写里面的compare方法来规定比较的规则。
但是对于自定义的类进行比较的话,那就要实现comparable接口重写compareTo方法来进行排序。如果要独立的定义规则也可以采用Collection.sort方式自定义规则重写Compare方法,如果要实现多规则的话就可以在自定义重写的规则里添加if判断句进行再次排序。
#Java学习之路——基础阶段二(第三篇)的更多相关文章
- #Java学习之路——基础阶段二(第一篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第九篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第二篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段(第三篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第十篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第八篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第七篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第六篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- #Java学习之路——基础阶段二(第五篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
随机推荐
- HTML5 CSS3 专题 :诱人的实例 3D展示商品信息
强化下perspective和transform:translateZ的用法.传统的商品展示或许并不能很好的吸引用户的注意力,但是如果在展示中添加适当的3D元素,~说不定效果不错哈~ 效果图: 说明一 ...
- vue.js小总结
Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统; 指令带有前缀 v-,以表示它们是 Vue 提供的特殊特性; v-for 指令可以绑定数组的数据来渲染一个项目列 ...
- CentOS 7.2 关闭防火墙
CentOS7 的防火墙配置跟以前版本有很大区别,CentOS7这个版本的防火墙默认使用的是firewall,与之前的版本使用iptables不一样 1.关闭防火墙: systemctl stop f ...
- Juint单元测试
********************************************************************************************* 单元测试:集 ...
- in_flight_pqueue.go
// right child } if (*pq)[j].pri >= (*pq)[i].pri { break } ...
- BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP
BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP 题意: N头牛,每头牛有一个权值,选择一些牛,要求连续的不能超过k个,求选择牛的权值和最大值 分析: 先考虑暴力DP,f ...
- i春秋----Misc
好久没有写 博客今天更新多了一些 解题思路:题目做多了,自然能够想到是凯撒解密: 查看得到答案; flag{4c850c5b3b2756e67a91bad8e046dda} 2: 解题思路:是我想太多 ...
- appium----【已解决】【Mac】安装sudo npm install -g appium-doctor总是提示“Error: EACCES: permission denied........”
[mac电脑] 问题: (1)npm install -g appium-doctor (2)sudo npm install -g appium-doctor (3)cnpm install ...
- java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava
搭建spring cloud的时候,报以下错误: java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplica ...
- Spring里的Async注解实现异步操作
异步执行一般用来发送一些消息数据,数据一致性不要求太高的场景,对于spring来说,它把这个异步进行了封装,使用一个注解就可以实现. 用法 程序启动时开启@EnableAsync注解 建立新的类型,建 ...