#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疯狂讲义(第四版)里面的内容. 前言: ...
随机推荐
- 微信公众号开发 包括服务器配置、java web项目搭建、tomcat手动发布web项目、微信开发所需的url和token验证 2017.12.2
https://www.cnblogs.com/klmei/p/7060879.html 基础配置很全面
- sql server导出数据结构
http://jingyan.baidu.com/article/eae07827ad76ba1fed548573.html
- Python中str()与repr()函数的区别
在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即str()或者 repr() . >>> a = 10 >>> type(str(a ...
- Postman 使用详解
转自: http://blog.csdn.net/flowerspring/article/details/52774399 Postman 使用详解 阅读 6754收藏 3022016-6-9 作者 ...
- Tomcat 优化方案 和 配置详解(转)
转自 Tomcat 优化方案 和 配置详解 http://201605130349.iteye.com/blog/2298985 Server.xml配置文件用于对整个容器进行相关的配置. <S ...
- float_array.go
) if err != nil { log.Fatalf("Could not parse: %s", s) ret ...
- java web 在线聊天的基本实现
随着互联网的发展,http的协议有些时候不能满足需求,比如在现聊天的实现.如果使用http协议必须轮训,或者使用长链接.必须要一个request,这样后台才能发送信息到前端. 后台不能主动找客户端通信 ...
- 【爆料】-《西悉尼大学毕业证书》UWS一模一样原件
☞西悉尼大学毕业证书[微/Q:865121257◆WeChat:CC6669834]UC毕业证书/联系人Alice[查看点击百度快照查看][留信网学历认证&博士&硕士&海归&a ...
- log4j java项目中的配置
第一步你需要 相关的jar包 第二歩你需要一个关于log4j的配置文件 第三歩 你需要一个检测用的java 文件 导入这两个jar包进你的项目中 commons-logging.jar log4j-1 ...
- hibernate 5.2.12配置
//创建服务注册对象 ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure() ...